From e40e34c446fd33ec48d92775239482c32fbc3a07 Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Tue, 25 Jul 2023 13:02:54 +0530 Subject: [PATCH 01/36] Feature: Adding playbook builder --- scripts/playbook_builder.py | 224 ++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 scripts/playbook_builder.py diff --git a/scripts/playbook_builder.py b/scripts/playbook_builder.py new file mode 100644 index 000000000..b1582802b --- /dev/null +++ b/scripts/playbook_builder.py @@ -0,0 +1,224 @@ +from collections import OrderedDict +from typing import List, Optional + +import streamlit as st +import streamlit_pydantic as sp +import yaml +from pydantic import BaseModel, Field + +st.set_page_config( + page_title="Playbook Builder", + page_icon=":wrench:", +) + +st.title(":wrench: Playbook Builder", anchor=None) + +if "expander_state" not in st.session_state: + st.session_state.expander_state = [True, False, False, False, False] + +# INITIALIZING ALL EXPANDERS +trigger_expander = st.expander( + ":zap: Trigger - A trigger is an event that starts your Playbook", expanded=st.session_state.expander_state[0] +) +trigger_parameter_expander = st.expander("Configure Trigger", expanded=st.session_state.expander_state[1]) +action_expander = st.expander( + ":boom: Action - An action is an event a Playbook performs after it starts", + expanded=st.session_state.expander_state[2], +) +action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) +playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) + + +# Temporary code +class K8sBaseTrigger(BaseModel): + kind: str + name_prefix: str = Field(None, description="Give it a value") + namespace_prefix: str = Field(None, description="Name of a specific namespace") + labels_selector: str = None + + +class SomeOtherTriggerParams(BaseModel): + namespace_prefix: str = None + labels_selector: str = None + + +class PrometheusParams(BaseModel): + """ + :var prometheus_url: Prometheus url. If omitted, we will try to find a prometheus instance in the same cluster + :var prometheus_auth: Prometheus auth header to be used in Authorization header. If omitted, we will not add any auth header + + :example prometheus_url: "http://prometheus-k8s.monitoring.svc.cluster.local:9090" + :example prometheus_auth: Basic YWRtaW46cGFzc3dvcmQ= + """ + + prometheus_url: Optional[str] = None + prometheus_auth: Optional[str] = None + + +class ResourceGraphEnricherParams(PrometheusParams): + """ + :var resource_type: one of: CPU, Memory, Disk (see ResourceChartResourceType) + :var graph_duration_minutes: Graph duration is minutes. Default is 60. + + :example resource_type: Memory + """ + + resource_type: str + graph_duration_minutes: int = 60 + + previous: bool = Field(False, description="descr text") + + +class CustomGraphEnricherParams(PrometheusParams): + """ + :var promql_query: Promql query. You can use $pod, $node and $node_internal_ip to template (see example). For more information, see https://prometheus.io/docs/prometheus/latest/querying/basics/ + :var graph_title: A nicer name for the Prometheus query. + :var graph_duration_minutes: Graph duration is minutes. + :var chart_values_format: Customize the y-axis labels with one of: Plain, Bytes, Percentage (see ChartValuesFormat) + + :example promql_query: instance:node_cpu_utilisation:rate5m{job="node-exporter", instance=~"$node_internal_ip:[0-9]+", cluster=""} != 0 + :example graph_title: CPU Usage for this nod + """ + + promql_query: str + graph_title: Optional[str] = None + graph_duration_minutes: int = 60 + chart_values_format: str = "Plain" + + +class ActionParams(BaseModel): + """ + Base class for all Action parameter classes. + """ + + def post_initialization(self): + """ + This function can be used to run post initialization logic on the action params + """ + pass + + pass + + +class GitAuditParams(ActionParams): + """ + :var cluster_name: This cluster name. Changes will be audited under this cluster name. + :var git_url: Audit Git repository url. + :var git_key: Git repository deployment key with *write* access. To set this up `generate a private/public key pair for GitHub `_. + :var ignored_changes: List of changes that shouldn't be audited. + + :example git_url: "git@github.com:arikalon1/robusta-audit.git" + """ + + cluster_name: str + git_url: str = Field(..., description="Example: https://hello.dev") + git_key: str + ignored_changes: str + + +class LogEnricherParams(ActionParams): + """ + :var container_name: Specific container to get logs from + :var warn_on_missing_label: Send a warning if the alert doesn't have a pod label + :var regex_replacer_patterns: regex patterns to replace text, for example for security reasons (Note: Replacements are executed in the given order) + :var regex_replacement_style: one of SAME_LENGTH_ASTERISKS or NAMED (See RegexReplacementStyle) + :var filter_regex: only shows lines that match the regex + """ + + container_name: Optional[str] + warn_on_missing_label: bool = False + regex_replacer_patterns: Optional[List] = None + regex_replacement_style: Optional[str] = None + previous: bool = False + filter_regex: Optional[str] = None + + +triggers = { + "on_oom_kill": { + "about": "Fires when a Pod is crash looping. It has the following parameters:", + "available_actions": ["logs_enricher", "template_enricher"], + "params": K8sBaseTrigger, + }, + "pod_restart": { + "about": "Fires when a Pod is updated. Creations and deletions are excluded.", + "available_actions": ["template_enricher"], + "params": K8sBaseTrigger, + }, +} + +actions = { + "logs_enricher": { + "about": """Fetch and attach Pod logs. The pod to fetch logs for is determined by the alert’s pod label from Prometheus. + By default, if the alert has no pod this enricher will silently do nothing.""", + "params": LogEnricherParams, + }, + "template_enricher": { + "about": """Enrich the finding with the node's status conditions. + Can help troubleshooting Node issues.""", + "params": PrometheusParams, + }, +} + +# End temporary code + + +# TRIGGER +with trigger_expander: + + trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") + st.markdown(triggers[trigger_name]["about"]) + + if st.button("Continue", key="button1"): + st.session_state.expander_state = [False, True, False, False, False] + st.experimental_rerun() + + +# TRIGGER PARAMETER +with trigger_parameter_expander: + # st.header("Available Parameters") + trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]["params"]) + + if st.button("Continue", key="button2"): + st.session_state.expander_state = [False, False, True, False, False] + st.experimental_rerun() + + +# ACTION +with action_expander: + + action_name = st.selectbox("Choose an action", triggers[trigger_name]["available_actions"], key="actions") + + st.markdown(actions[action_name]["about"]) + + if st.button("Continue", key="button3"): + st.session_state.expander_state = [False, False, False, True, False] + st.experimental_rerun() + + +# ACTION PARAMETER +with action_parameter_expander: + + action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=actions[action_name]["params"]) + + if st.button("Continue", key="button4"): + st.session_state.expander_state = [False, False, False, False, True] + st.experimental_rerun() + + +# DISPLAY PLAYBOOK +with playbook_expander: + st.markdown( + "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" + ) + + playbook = { + "customPlaybooks": [ + OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])]) + ] + } + + yaml.add_representer( + OrderedDict, lambda dumper, data: dumper.represent_mapping("tag:yaml.org,2002:map", data.items()) + ) + + st.code(yaml.dump(playbook)) From 7a9d0848b9162ebbb4546718d2a81bb8eaccd00d Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Fri, 28 Jul 2023 21:29:31 +0300 Subject: [PATCH 02/36] initial commit - actions part is broken --- poetry.lock | 1252 +++++++++++++++------ pyproject.toml | 4 +- scripts/generate_playbook_descriptions.py | 24 +- scripts/playbook_builder.py | 43 +- 4 files changed, 930 insertions(+), 393 deletions(-) mode change 100644 => 100755 scripts/generate_playbook_descriptions.py diff --git a/poetry.lock b/poetry.lock index b6473a10b..d2884d642 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "absolufy-imports" @@ -24,6 +24,30 @@ files = [ {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, ] +[[package]] +name = "altair" +version = "5.0.1" +description = "Vega-Altair: A declarative statistical visualization library for Python." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "altair-5.0.1-py3-none-any.whl", hash = "sha256:9f3552ed5497d4dfc14cf48a76141d8c29ee56eae2873481b4b28134268c9bbe"}, + {file = "altair-5.0.1.tar.gz", hash = "sha256:087d7033cb2d6c228493a053e12613058a5d47faf6a36aea3ff60305fd8b4cb0"}, +] + +[package.dependencies] +jinja2 = "*" +jsonschema = ">=3.0" +numpy = "*" +pandas = ">=0.18" +toolz = "*" +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["black (<24)", "hatch", "ipython", "m2r", "mypy", "pandas-stubs", "pytest", "pytest-cov", "ruff", "types-jsonschema", "types-setuptools", "vega-datasets", "vl-convert-python"] +doc = ["docutils", "geopandas", "jinja2", "myst-parser", "numpydoc", "pillow", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinxext-altair"] + [[package]] name = "anyio" version = "3.7.1" @@ -116,38 +140,6 @@ files = [ {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, ] -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - -[[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -category = "main" -optional = true -python-versions = ">=3.6" -files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] - -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "better-exceptions" version = "0.3.3" @@ -219,6 +211,18 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.2)"] +[[package]] +name = "blinker" +version = "1.6.2" +description = "Fast, simple object-to-object and broadcast signaling" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "blinker-1.6.2-py3-none-any.whl", hash = "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0"}, + {file = "blinker-1.6.2.tar.gz", hash = "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213"}, +] + [[package]] name = "cachetools" version = "5.3.1" @@ -233,14 +237,14 @@ files = [ [[package]] name = "cairocffi" -version = "1.6.0" +version = "1.6.1" description = "cffi-based cairo bindings for Python" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "cairocffi-1.6.0-py3-none-any.whl", hash = "sha256:fec979f3e904c1a38350b06dcc91d3c15f9a4954e618a068761622e3a0d5058c"}, - {file = "cairocffi-1.6.0.tar.gz", hash = "sha256:e7f21ea1546a5d490ceba77b6216c1393d7e0a7856e292864a88a7506092bf4d"}, + {file = "cairocffi-1.6.1-py3-none-any.whl", hash = "sha256:aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e"}, + {file = "cairocffi-1.6.1.tar.gz", hash = "sha256:78e6bbe47357640c453d0be929fa49cd05cce2e1286f3d2a1ca9cbda7efdb8b7"}, ] [package.dependencies] @@ -276,14 +280,14 @@ test = ["flake8", "isort", "pytest"] [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] @@ -376,15 +380,88 @@ files = [ ] [[package]] -name = "chardet" -version = "4.0.0" -description = "Universal encoding detector for Python 2 and 3" +name = "charset-normalizer" +version = "3.2.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7.0" files = [ - {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, - {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] [[package]] @@ -458,14 +535,14 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} [[package]] name = "croniter" -version = "1.4.0" +version = "1.4.1" description = "croniter provides iteration for datetime object with cron like format" category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "croniter-1.4.0-py2.py3-none-any.whl", hash = "sha256:4cb177d0167d4a61b1aa3575fcf06b9a064e9a48a4b11d6ab474b1b9e126ed9c"}, - {file = "croniter-1.4.0.tar.gz", hash = "sha256:edf332f2ef3b2b47d4c01004c640981c5a70d8ccb6b854aea8866a28b532449a"}, + {file = "croniter-1.4.1-py2.py3-none-any.whl", hash = "sha256:9595da48af37ea06ec3a9f899738f1b2c1c13da3c38cea606ef7cd03ea421128"}, + {file = "croniter-1.4.1.tar.gz", hash = "sha256:1a6df60eacec3b7a0aa52a8f2ef251ae3dd2a7c7c8b9874e73e791636d55a361"}, ] [package.dependencies] @@ -589,6 +666,18 @@ calendars = ["convertdate", "hijri-converter"] fasttext = ["fasttext"] langdetect = ["langdetect"] +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] + [[package]] name = "defusedxml" version = "0.7.1" @@ -618,14 +707,14 @@ packaging = "*" [[package]] name = "distlib" -version = "0.3.6" +version = "0.3.7" description = "Distribution utilities" category = "dev" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, + {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, + {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, ] [[package]] @@ -761,18 +850,50 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.38.0" +version = "4.41.1" description = "Tools to manipulate font files" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "fonttools-4.38.0-py3-none-any.whl", hash = "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb"}, - {file = "fonttools-4.38.0.zip", hash = "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1"}, + {file = "fonttools-4.41.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a7bbb290d13c6dd718ec2c3db46fe6c5f6811e7ea1e07f145fd8468176398224"}, + {file = "fonttools-4.41.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ec453a45778524f925a8f20fd26a3326f398bfc55d534e37bab470c5e415caa1"}, + {file = "fonttools-4.41.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2071267deaa6d93cb16288613419679c77220543551cbe61da02c93d92df72f"}, + {file = "fonttools-4.41.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e3334d51f0e37e2c6056e67141b2adabc92613a968797e2571ca8a03bd64773"}, + {file = "fonttools-4.41.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cac73bbef7734e78c60949da11c4903ee5837168e58772371bd42a75872f4f82"}, + {file = "fonttools-4.41.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:edee0900cf0eedb29d17c7876102d6e5a91ee333882b1f5abc83e85b934cadb5"}, + {file = "fonttools-4.41.1-cp310-cp310-win32.whl", hash = "sha256:2a22b2c425c698dcd5d6b0ff0b566e8e9663172118db6fd5f1941f9b8063da9b"}, + {file = "fonttools-4.41.1-cp310-cp310-win_amd64.whl", hash = "sha256:547ab36a799dded58a46fa647266c24d0ed43a66028cd1cd4370b246ad426cac"}, + {file = "fonttools-4.41.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:849ec722bbf7d3501a0e879e57dec1fc54919d31bff3f690af30bb87970f9784"}, + {file = "fonttools-4.41.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38cdecd8f1fd4bf4daae7fed1b3170dfc1b523388d6664b2204b351820aa78a7"}, + {file = "fonttools-4.41.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ae64303ba670f8959fdaaa30ba0c2dabe75364fdec1caeee596c45d51ca3425"}, + {file = "fonttools-4.41.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f14f3ccea4cc7dd1b277385adf3c3bf18f9860f87eab9c2fb650b0af16800f55"}, + {file = "fonttools-4.41.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:33191f062549e6bb1a4782c22a04ebd37009c09360e2d6686ac5083774d06d95"}, + {file = "fonttools-4.41.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:704bccd69b0abb6fab9f5e4d2b75896afa48b427caa2c7988792a2ffce35b441"}, + {file = "fonttools-4.41.1-cp311-cp311-win32.whl", hash = "sha256:4edc795533421e98f60acee7d28fc8d941ff5ac10f44668c9c3635ad72ae9045"}, + {file = "fonttools-4.41.1-cp311-cp311-win_amd64.whl", hash = "sha256:aaaef294d8e411f0ecb778a0aefd11bb5884c9b8333cc1011bdaf3b58ca4bd75"}, + {file = "fonttools-4.41.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3d1f9471134affc1e3b1b806db6e3e2ad3fa99439e332f1881a474c825101096"}, + {file = "fonttools-4.41.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59eba8b2e749a1de85760da22333f3d17c42b66e03758855a12a2a542723c6e7"}, + {file = "fonttools-4.41.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9b3cc10dc9e0834b6665fd63ae0c6964c6bc3d7166e9bc84772e0edd09f9fa2"}, + {file = "fonttools-4.41.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2c2964bdc827ba6b8a91dc6de792620be4da3922c4cf0599f36a488c07e2b2"}, + {file = "fonttools-4.41.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7763316111df7b5165529f4183a334aa24c13cdb5375ffa1dc8ce309c8bf4e5c"}, + {file = "fonttools-4.41.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b2d1ee95be42b80d1f002d1ee0a51d7a435ea90d36f1a5ae331be9962ee5a3f1"}, + {file = "fonttools-4.41.1-cp38-cp38-win32.whl", hash = "sha256:f48602c0b3fd79cd83a34c40af565fe6db7ac9085c8823b552e6e751e3a5b8be"}, + {file = "fonttools-4.41.1-cp38-cp38-win_amd64.whl", hash = "sha256:b0938ebbeccf7c80bb9a15e31645cf831572c3a33d5cc69abe436e7000c61b14"}, + {file = "fonttools-4.41.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e5c2b0a95a221838991e2f0e455dec1ca3a8cc9cd54febd68cc64d40fdb83669"}, + {file = "fonttools-4.41.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:891cfc5a83b0307688f78b9bb446f03a7a1ad981690ac8362f50518bc6153975"}, + {file = "fonttools-4.41.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73ef0bb5d60eb02ba4d3a7d23ada32184bd86007cb2de3657cfcb1175325fc83"}, + {file = "fonttools-4.41.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f240d9adf0583ac8fc1646afe7f4ac039022b6f8fa4f1575a2cfa53675360b69"}, + {file = "fonttools-4.41.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bdd729744ae7ecd7f7311ad25d99da4999003dcfe43b436cf3c333d4e68de73d"}, + {file = "fonttools-4.41.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b927e5f466d99c03e6e20961946314b81d6e3490d95865ef88061144d9f62e38"}, + {file = "fonttools-4.41.1-cp39-cp39-win32.whl", hash = "sha256:afce2aeb80be72b4da7dd114f10f04873ff512793d13ce0b19d12b2a4c44c0f0"}, + {file = "fonttools-4.41.1-cp39-cp39-win_amd64.whl", hash = "sha256:1df1b6f4c7c4bc8201eb47f3b268adbf2539943aa43c400f84556557e3e109c0"}, + {file = "fonttools-4.41.1-py3-none-any.whl", hash = "sha256:952cb405f78734cf6466252fec42e206450d1a6715746013f64df9cbd4f896fa"}, + {file = "fonttools-4.41.1.tar.gz", hash = "sha256:e16a9449f21a93909c5be2f5ed5246420f2316e94195dbfccb5238aaa38f9751"}, ] [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 (>=14.0.0)", "xattr", "zopfli (>=0.1.4)"] +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.0.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] interpolatable = ["munkres", "scipy"] lxml = ["lxml (>=4.0,<5)"] @@ -782,7 +903,7 @@ repacker = ["uharfbuzz (>=0.23.0)"] symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=14.0.0)"] +unicode = ["unicodedata2 (>=15.0.0)"] woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] @@ -818,7 +939,7 @@ name = "gitdb" version = "4.0.10" description = "Git Object Database" category = "main" -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, @@ -830,14 +951,14 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.31" +version = "3.1.32" description = "GitPython is a Python library used to interact with Git repositories" category = "main" -optional = true +optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, - {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, + {file = "GitPython-3.1.32-py3-none-any.whl", hash = "sha256:e3d59b1c2c6ebb9dfa7a184daf3b6dd4914237e7488a1730a6d8f6f5d0b4187f"}, + {file = "GitPython-3.1.32.tar.gz", hash = "sha256:8d9b8cb1e80b9735e8717c9362079d3ce4c6e5ddeebedd0361b228c3a67a62f6"}, ] [package.dependencies] @@ -845,29 +966,28 @@ gitdb = ">=4.0.1,<5" [[package]] name = "google-auth" -version = "2.20.0" +version = "2.17.3" description = "Google Authentication Library" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" files = [ - {file = "google-auth-2.20.0.tar.gz", hash = "sha256:030af34138909ccde0fbce611afc178f1d65d32fbff281f25738b1fe1c6f3eaa"}, - {file = "google_auth-2.20.0-py2.py3-none-any.whl", hash = "sha256:23b7b0950fcda519bfb6692bf0d5289d2ea49fc143717cc7188458ec620e63fa"}, + {file = "google-auth-2.17.3.tar.gz", hash = "sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc"}, + {file = "google_auth-2.17.3-py2.py3-none-any.whl", hash = "sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f"}, ] [package.dependencies] cachetools = ">=2.0.0,<6.0" pyasn1-modules = ">=0.2.1" -rsa = ">=3.1.4,<5" +rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} six = ">=1.9.0" -urllib3 = "<2.0" [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] -requests = ["requests (>=2.20.0,<3.0.0.dev0)"] +requests = ["requests (>=2.20.0,<3.0.0dev)"] [[package]] name = "gotrue" @@ -995,14 +1115,14 @@ tests = ["freezegun", "pytest", "pytest-cov"] [[package]] name = "identify" -version = "2.5.24" +version = "2.5.26" description = "File identification library for Python" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, - {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, + {file = "identify-2.5.26-py2.py3-none-any.whl", hash = "sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54"}, + {file = "identify-2.5.26.tar.gz", hash = "sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f"}, ] [package.extras] @@ -1010,14 +1130,14 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "2.10" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.5" files = [ - {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, - {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] [[package]] @@ -1034,14 +1154,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.6.0" +version = "6.8.0" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, - {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, ] [package.dependencies] @@ -1050,23 +1170,20 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +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"] [[package]] name = "importlib-resources" version = "6.0.0" description = "Read resources from Python packages" -category = "main" -optional = true +category = "dev" +optional = false python-versions = ">=3.8" files = [ {file = "importlib_resources-6.0.0-py3-none-any.whl", hash = "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185"}, {file = "importlib_resources-6.0.0.tar.gz", hash = "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2"}, ] -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] @@ -1190,6 +1307,43 @@ files = [ {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, ] +[[package]] +name = "jsonschema" +version = "4.18.4" +description = "An implementation of JSON Schema validation for Python" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.18.4-py3-none-any.whl", hash = "sha256:971be834317c22daaa9132340a51c01b50910724082c2c1a2ac87eeec153a3fe"}, + {file = "jsonschema-4.18.4.tar.gz", hash = "sha256:fb3642735399fa958c0d2aad7057901554596c63349f4f6b283c493cf692a25d"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jsonschema-specifications" +version = "2023.7.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +category = "dev" +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"}, +] + +[package.dependencies] +referencing = ">=0.28.0" + [[package]] name = "kafka-python" version = "2.0.2" @@ -1219,7 +1373,6 @@ files = [ [package.dependencies] importlib-metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} "jaraco.classes" = "*" jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} @@ -1273,16 +1426,41 @@ files = [ six = "*" tornado = {version = "*", markers = "python_version > \"2.7\""} +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "markdown2" -version = "2.4.8" +version = "2.4.10" description = "A fast and complete Python implementation of Markdown" category = "main" optional = false python-versions = ">=3.5, <4" files = [ - {file = "markdown2-2.4.8-py2.py3-none-any.whl", hash = "sha256:7d49ca871d3e0e412c65d7d21fcbc13ae897f7876f3e5f14dd4db3b7fbf27f10"}, - {file = "markdown2-2.4.8.tar.gz", hash = "sha256:90475aca3d9c8e7df6d70c51de5bbbe9edf7fcf6a380bd1044d321500f5445da"}, + {file = "markdown2-2.4.10-py2.py3-none-any.whl", hash = "sha256:e6105800483783831f5dc54f827aa5b44eb137ecef5a70293d8ecfbb4109ecc6"}, + {file = "markdown2-2.4.10.tar.gz", hash = "sha256:cdba126d90dc3aef6f4070ac342f974d63f415678959329cc7909f96cc235d72"}, ] [package.extras] @@ -1369,16 +1547,28 @@ files = [ {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, ] +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + [[package]] name = "more-itertools" -version = "9.1.0" +version = "10.0.0" description = "More routines for operating on iterables, beyond itertools" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "more-itertools-9.1.0.tar.gz", hash = "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d"}, - {file = "more_itertools-9.1.0-py3-none-any.whl", hash = "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3"}, + {file = "more-itertools-10.0.0.tar.gz", hash = "sha256:cd65437d7c4b615ab81c0640c0480bc29a550ea032891977681efd28344d51e1"}, + {file = "more_itertools-10.0.0-py3-none-any.whl", hash = "sha256:928d514ffd22b5b0a8fce326d57f423a55d2ff783b093bab217eda71e732330f"}, ] [[package]] @@ -1461,40 +1651,37 @@ setuptools = "*" [[package]] name = "numpy" -version = "1.21.1" -description = "NumPy is the fundamental package for array computing with Python." +version = "1.25.1" +description = "Fundamental package for array computing in Python" category = "main" -optional = true -python-versions = ">=3.7" -files = [ - {file = "numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50"}, - {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a"}, - {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062"}, - {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1"}, - {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671"}, - {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e"}, - {file = "numpy-1.21.1-cp37-cp37m-win32.whl", hash = "sha256:73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172"}, - {file = "numpy-1.21.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8"}, - {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16"}, - {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267"}, - {file = "numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6"}, - {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63"}, - {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af"}, - {file = "numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5"}, - {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68"}, - {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8"}, - {file = "numpy-1.21.1-cp38-cp38-win32.whl", hash = "sha256:978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd"}, - {file = "numpy-1.21.1-cp38-cp38-win_amd64.whl", hash = "sha256:9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214"}, - {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f"}, - {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b"}, - {file = "numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac"}, - {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1"}, - {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1"}, - {file = "numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a"}, - {file = "numpy-1.21.1-cp39-cp39-win32.whl", hash = "sha256:88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2"}, - {file = "numpy-1.21.1-cp39-cp39-win_amd64.whl", hash = "sha256:01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33"}, - {file = "numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4"}, - {file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"}, +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.25.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:77d339465dff3eb33c701430bcb9c325b60354698340229e1dff97745e6b3efa"}, + {file = "numpy-1.25.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d736b75c3f2cb96843a5c7f8d8ccc414768d34b0a75f466c05f3a739b406f10b"}, + {file = "numpy-1.25.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a90725800caeaa160732d6b31f3f843ebd45d6b5f3eec9e8cc287e30f2805bf"}, + {file = "numpy-1.25.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c6c9261d21e617c6dc5eacba35cb68ec36bb72adcff0dee63f8fbc899362588"}, + {file = "numpy-1.25.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0def91f8af6ec4bb94c370e38c575855bf1d0be8a8fbfba42ef9c073faf2cf19"}, + {file = "numpy-1.25.1-cp310-cp310-win32.whl", hash = "sha256:fd67b306320dcadea700a8f79b9e671e607f8696e98ec255915c0c6d6b818503"}, + {file = "numpy-1.25.1-cp310-cp310-win_amd64.whl", hash = "sha256:c1516db588987450b85595586605742879e50dcce923e8973f79529651545b57"}, + {file = "numpy-1.25.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6b82655dd8efeea69dbf85d00fca40013d7f503212bc5259056244961268b66e"}, + {file = "numpy-1.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e8f6049c4878cb16960fbbfb22105e49d13d752d4d8371b55110941fb3b17800"}, + {file = "numpy-1.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41a56b70e8139884eccb2f733c2f7378af06c82304959e174f8e7370af112e09"}, + {file = "numpy-1.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5154b1a25ec796b1aee12ac1b22f414f94752c5f94832f14d8d6c9ac40bcca6"}, + {file = "numpy-1.25.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38eb6548bb91c421261b4805dc44def9ca1a6eef6444ce35ad1669c0f1a3fc5d"}, + {file = "numpy-1.25.1-cp311-cp311-win32.whl", hash = "sha256:791f409064d0a69dd20579345d852c59822c6aa087f23b07b1b4e28ff5880fcb"}, + {file = "numpy-1.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:c40571fe966393b212689aa17e32ed905924120737194b5d5c1b20b9ed0fb171"}, + {file = "numpy-1.25.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3d7abcdd85aea3e6cdddb59af2350c7ab1ed764397f8eec97a038ad244d2d105"}, + {file = "numpy-1.25.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a180429394f81c7933634ae49b37b472d343cccb5bb0c4a575ac8bbc433722f"}, + {file = "numpy-1.25.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d412c1697c3853c6fc3cb9751b4915859c7afe6a277c2bf00acf287d56c4e625"}, + {file = "numpy-1.25.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20e1266411120a4f16fad8efa8e0454d21d00b8c7cee5b5ccad7565d95eb42dd"}, + {file = "numpy-1.25.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f76aebc3358ade9eacf9bc2bb8ae589863a4f911611694103af05346637df1b7"}, + {file = "numpy-1.25.1-cp39-cp39-win32.whl", hash = "sha256:247d3ffdd7775bdf191f848be8d49100495114c82c2bd134e8d5d075fb386a1c"}, + {file = "numpy-1.25.1-cp39-cp39-win_amd64.whl", hash = "sha256:1d5d3c68e443c90b38fdf8ef40e60e2538a27548b39b12b73132456847f4b631"}, + {file = "numpy-1.25.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:35a9527c977b924042170a0887de727cd84ff179e478481404c5dc66b4170009"}, + {file = "numpy-1.25.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d3fe3dd0506a28493d82dc3cf254be8cd0d26f4008a417385cbf1ae95b54004"}, + {file = "numpy-1.25.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:012097b5b0d00a11070e8f2e261128c44157a8689f7dedcf35576e525893f4fe"}, + {file = "numpy-1.25.1.tar.gz", hash = "sha256:9a3a9f3a61480cc086117b426a8bd86869c213fc4072e606f01c4e4b66eb92bf"}, ] [[package]] @@ -1548,51 +1735,70 @@ files = [ [[package]] name = "pandas" -version = "1.3.5" +version = "2.0.3" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" -optional = true -python-versions = ">=3.7.1" -files = [ - {file = "pandas-1.3.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:62d5b5ce965bae78f12c1c0df0d387899dd4211ec0bdc52822373f13a3a022b9"}, - {file = "pandas-1.3.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:adfeb11be2d54f275142c8ba9bf67acee771b7186a5745249c7d5a06c670136b"}, - {file = "pandas-1.3.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60a8c055d58873ad81cae290d974d13dd479b82cbb975c3e1fa2cf1920715296"}, - {file = "pandas-1.3.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd541ab09e1f80a2a1760032d665f6e032d8e44055d602d65eeea6e6e85498cb"}, - {file = "pandas-1.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2651d75b9a167cc8cc572cf787ab512d16e316ae00ba81874b560586fa1325e0"}, - {file = "pandas-1.3.5-cp310-cp310-win_amd64.whl", hash = "sha256:aaf183a615ad790801fa3cf2fa450e5b6d23a54684fe386f7e3208f8b9bfbef6"}, - {file = "pandas-1.3.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:344295811e67f8200de2390093aeb3c8309f5648951b684d8db7eee7d1c81fb7"}, - {file = "pandas-1.3.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:552020bf83b7f9033b57cbae65589c01e7ef1544416122da0c79140c93288f56"}, - {file = "pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cce0c6bbeb266b0e39e35176ee615ce3585233092f685b6a82362523e59e5b4"}, - {file = "pandas-1.3.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d28a3c65463fd0d0ba8bbb7696b23073efee0510783340a44b08f5e96ffce0c"}, - {file = "pandas-1.3.5-cp37-cp37m-win32.whl", hash = "sha256:a62949c626dd0ef7de11de34b44c6475db76995c2064e2d99c6498c3dba7fe58"}, - {file = "pandas-1.3.5-cp37-cp37m-win_amd64.whl", hash = "sha256:8025750767e138320b15ca16d70d5cdc1886e8f9cc56652d89735c016cd8aea6"}, - {file = "pandas-1.3.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fe95bae4e2d579812865db2212bb733144e34d0c6785c0685329e5b60fcb85dd"}, - {file = "pandas-1.3.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f261553a1e9c65b7a310302b9dbac31cf0049a51695c14ebe04e4bfd4a96f02"}, - {file = "pandas-1.3.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b6dbec5f3e6d5dc80dcfee250e0a2a652b3f28663492f7dab9a24416a48ac39"}, - {file = "pandas-1.3.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3bc49af96cd6285030a64779de5b3688633a07eb75c124b0747134a63f4c05f"}, - {file = "pandas-1.3.5-cp38-cp38-win32.whl", hash = "sha256:b6b87b2fb39e6383ca28e2829cddef1d9fc9e27e55ad91ca9c435572cdba51bf"}, - {file = "pandas-1.3.5-cp38-cp38-win_amd64.whl", hash = "sha256:a395692046fd8ce1edb4c6295c35184ae0c2bbe787ecbe384251da609e27edcb"}, - {file = "pandas-1.3.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd971a3f08b745a75a86c00b97f3007c2ea175951286cdda6abe543e687e5f2f"}, - {file = "pandas-1.3.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37f06b59e5bc05711a518aa10beaec10942188dccb48918bb5ae602ccbc9f1a0"}, - {file = "pandas-1.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c21778a688d3712d35710501f8001cdbf96eb70a7c587a3d5613573299fdca6"}, - {file = "pandas-1.3.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3345343206546545bc26a05b4602b6a24385b5ec7c75cb6059599e3d56831da2"}, - {file = "pandas-1.3.5-cp39-cp39-win32.whl", hash = "sha256:c69406a2808ba6cf580c2255bcf260b3f214d2664a3a4197d0e640f573b46fd3"}, - {file = "pandas-1.3.5-cp39-cp39-win_amd64.whl", hash = "sha256:32e1a26d5ade11b547721a72f9bfc4bd113396947606e00d5b4a5b79b3dcb006"}, - {file = "pandas-1.3.5.tar.gz", hash = "sha256:1e4285f5de1012de20ca46b188ccf33521bff61ba5c5ebd78b4fb28e5416a9f1"}, +optional = false +python-versions = ">=3.8" +files = [ + {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"}, + {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"}, + {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"}, + {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"}, + {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"}, + {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"}, + {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"}, + {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"}, + {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"}, + {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"}, + {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"}, ] [package.dependencies] numpy = [ - {version = ">=1.17.3", markers = "platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.19.2", markers = "platform_machine == \"aarch64\" and python_version < \"3.10\""}, - {version = ">=1.20.0", markers = "platform_machine == \"arm64\" and python_version < \"3.10\""}, {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, ] -python-dateutil = ">=2.7.3" -pytz = ">=2017.3" +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.1" [package.extras] -test = ["hypothesis (>=3.58)", "pytest (>=6.0)", "pytest-xdist"] +all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] +aws = ["s3fs (>=2021.08.0)"] +clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"] +compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"] +computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2021.07.0)"] +gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"] +hdf5 = ["tables (>=3.6.1)"] +html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"] +mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"] +spss = ["pyreadstat (>=1.1.2)"] +sql-other = ["SQLAlchemy (>=1.4.16)"] +test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.6.3)"] [[package]] name = "pathspec" @@ -1703,14 +1909,14 @@ testing = ["pytest", "pytest-cov"] [[package]] name = "platformdirs" -version = "3.5.3" +version = "3.9.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.5.3-py3-none-any.whl", hash = "sha256:0ade98a4895e87dc51d47151f7d2ec290365a585151d97b4d8d6312ed6132fed"}, - {file = "platformdirs-3.5.3.tar.gz", hash = "sha256:e48fabd87db8f3a7df7150a4a5ea22c546ee8bc39bc2473244730d4b56d2cc4e"}, + {file = "platformdirs-3.9.1-py3-none-any.whl", hash = "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f"}, + {file = "platformdirs-3.9.1.tar.gz", hash = "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421"}, ] [package.extras] @@ -1719,14 +1925,14 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, ] [package.extras] @@ -1815,6 +2021,29 @@ files = [ [package.extras] twisted = ["twisted"] +[[package]] +name = "protobuf" +version = "4.23.4" +description = "" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "protobuf-4.23.4-cp310-abi3-win32.whl", hash = "sha256:5fea3c64d41ea5ecf5697b83e41d09b9589e6f20b677ab3c48e5f242d9b7897b"}, + {file = "protobuf-4.23.4-cp310-abi3-win_amd64.whl", hash = "sha256:7b19b6266d92ca6a2a87effa88ecc4af73ebc5cfde194dc737cf8ef23a9a3b12"}, + {file = "protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8547bf44fe8cec3c69e3042f5c4fb3e36eb2a7a013bb0a44c018fc1e427aafbd"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fee88269a090ada09ca63551bf2f573eb2424035bcf2cb1b121895b01a46594a"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:effeac51ab79332d44fba74660d40ae79985901ac21bca408f8dc335a81aa597"}, + {file = "protobuf-4.23.4-cp37-cp37m-win32.whl", hash = "sha256:c3e0939433c40796ca4cfc0fac08af50b00eb66a40bbbc5dee711998fb0bbc1e"}, + {file = "protobuf-4.23.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9053df6df8e5a76c84339ee4a9f5a2661ceee4a0dab019e8663c50ba324208b0"}, + {file = "protobuf-4.23.4-cp38-cp38-win32.whl", hash = "sha256:e1c915778d8ced71e26fcf43c0866d7499891bca14c4368448a82edc61fdbc70"}, + {file = "protobuf-4.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:351cc90f7d10839c480aeb9b870a211e322bf05f6ab3f55fcb2f51331f80a7d2"}, + {file = "protobuf-4.23.4-cp39-cp39-win32.whl", hash = "sha256:6dd9b9940e3f17077e820b75851126615ee38643c2c5332aa7a359988820c720"}, + {file = "protobuf-4.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:0a5759f5696895de8cc913f084e27fd4125e8fb0914bb729a17816a33819f474"}, + {file = "protobuf-4.23.4-py3-none-any.whl", hash = "sha256:e9d0be5bf34b275b9f87ba7407796556abeeba635455d036c7351f7c183ef8ff"}, + {file = "protobuf-4.23.4.tar.gz", hash = "sha256:ccd9430c0719dce806b93f89c91de7977304729e55377f872a92465d548329a9"}, +] + [[package]] name = "py" version = "1.11.0" @@ -1827,6 +2056,44 @@ files = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +[[package]] +name = "pyarrow" +version = "12.0.1" +description = "Python library for Apache Arrow" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyarrow-12.0.1-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:6d288029a94a9bb5407ceebdd7110ba398a00412c5b0155ee9813a40d246c5df"}, + {file = "pyarrow-12.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345e1828efdbd9aa4d4de7d5676778aba384a2c3add896d995b23d368e60e5af"}, + {file = "pyarrow-12.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d6009fdf8986332b2169314da482baed47ac053311c8934ac6651e614deacd6"}, + {file = "pyarrow-12.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d3c4cbbf81e6dd23fe921bc91dc4619ea3b79bc58ef10bce0f49bdafb103daf"}, + {file = "pyarrow-12.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdacf515ec276709ac8042c7d9bd5be83b4f5f39c6c037a17a60d7ebfd92c890"}, + {file = "pyarrow-12.0.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:749be7fd2ff260683f9cc739cb862fb11be376de965a2a8ccbf2693b098db6c7"}, + {file = "pyarrow-12.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6895b5fb74289d055c43db3af0de6e16b07586c45763cb5e558d38b86a91e3a7"}, + {file = "pyarrow-12.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1887bdae17ec3b4c046fcf19951e71b6a619f39fa674f9881216173566c8f718"}, + {file = "pyarrow-12.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2c9cb8eeabbadf5fcfc3d1ddea616c7ce893db2ce4dcef0ac13b099ad7ca082"}, + {file = "pyarrow-12.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:ce4aebdf412bd0eeb800d8e47db854f9f9f7e2f5a0220440acf219ddfddd4f63"}, + {file = "pyarrow-12.0.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:e0d8730c7f6e893f6db5d5b86eda42c0a130842d101992b581e2138e4d5663d3"}, + {file = "pyarrow-12.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43364daec02f69fec89d2315f7fbfbeec956e0d991cbbef471681bd77875c40f"}, + {file = "pyarrow-12.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:051f9f5ccf585f12d7de836e50965b3c235542cc896959320d9776ab93f3b33d"}, + {file = "pyarrow-12.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:be2757e9275875d2a9c6e6052ac7957fbbfc7bc7370e4a036a9b893e96fedaba"}, + {file = "pyarrow-12.0.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:cf812306d66f40f69e684300f7af5111c11f6e0d89d6b733e05a3de44961529d"}, + {file = "pyarrow-12.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:459a1c0ed2d68671188b2118c63bac91eaef6fc150c77ddd8a583e3c795737bf"}, + {file = "pyarrow-12.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85e705e33eaf666bbe508a16fd5ba27ca061e177916b7a317ba5a51bee43384c"}, + {file = "pyarrow-12.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9120c3eb2b1f6f516a3b7a9714ed860882d9ef98c4b17edcdc91d95b7528db60"}, + {file = "pyarrow-12.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:c780f4dc40460015d80fcd6a6140de80b615349ed68ef9adb653fe351778c9b3"}, + {file = "pyarrow-12.0.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:a3c63124fc26bf5f95f508f5d04e1ece8cc23a8b0af2a1e6ab2b1ec3fdc91b24"}, + {file = "pyarrow-12.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b13329f79fa4472324f8d32dc1b1216616d09bd1e77cfb13104dec5463632c36"}, + {file = "pyarrow-12.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb656150d3d12ec1396f6dde542db1675a95c0cc8366d507347b0beed96e87ca"}, + {file = "pyarrow-12.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6251e38470da97a5b2e00de5c6a049149f7b2bd62f12fa5dbb9ac674119ba71a"}, + {file = "pyarrow-12.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:3de26da901216149ce086920547dfff5cd22818c9eab67ebc41e863a5883bac7"}, + {file = "pyarrow-12.0.1.tar.gz", hash = "sha256:cce317fc96e5b71107bf1f9f184d5e54e2bd14bbf3f9a3d62819961f0af86fec"}, +] + +[package.dependencies] +numpy = ">=1.16.6" + [[package]] name = "pyasn1" version = "0.5.0" @@ -1880,48 +2147,48 @@ files = [ [[package]] name = "pydantic" -version = "1.10.9" +version = "1.10.12" description = "Data validation and settings management using python type hints" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca"}, - {file = "pydantic-1.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f"}, - {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896"}, - {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d"}, - {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f"}, - {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4"}, - {file = "pydantic-1.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f"}, - {file = "pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0"}, - {file = "pydantic-1.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7"}, - {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d"}, - {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c"}, - {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91"}, - {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8"}, - {file = "pydantic-1.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f"}, - {file = "pydantic-1.10.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece"}, - {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a"}, - {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a"}, - {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60"}, - {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf"}, - {file = "pydantic-1.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29"}, - {file = "pydantic-1.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82"}, - {file = "pydantic-1.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6"}, - {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766"}, - {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3"}, - {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572"}, - {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e"}, - {file = "pydantic-1.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb"}, - {file = "pydantic-1.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298"}, - {file = "pydantic-1.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276"}, - {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60"}, - {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc"}, - {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a"}, - {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4"}, - {file = "pydantic-1.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1"}, - {file = "pydantic-1.10.9-py3-none-any.whl", hash = "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305"}, - {file = "pydantic-1.10.9.tar.gz", hash = "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"}, + {file = "pydantic-1.10.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a1fcb59f2f355ec350073af41d927bf83a63b50e640f4dbaa01053a28b7a7718"}, + {file = "pydantic-1.10.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b7ccf02d7eb340b216ec33e53a3a629856afe1c6e0ef91d84a4e6f2fb2ca70fe"}, + {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fb2aa3ab3728d950bcc885a2e9eff6c8fc40bc0b7bb434e555c215491bcf48b"}, + {file = "pydantic-1.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:771735dc43cf8383959dc9b90aa281f0b6092321ca98677c5fb6125a6f56d58d"}, + {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca48477862372ac3770969b9d75f1bf66131d386dba79506c46d75e6b48c1e09"}, + {file = "pydantic-1.10.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5e7add47a5b5a40c49b3036d464e3c7802f8ae0d1e66035ea16aa5b7a3923ed"}, + {file = "pydantic-1.10.12-cp310-cp310-win_amd64.whl", hash = "sha256:e4129b528c6baa99a429f97ce733fff478ec955513630e61b49804b6cf9b224a"}, + {file = "pydantic-1.10.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0d191db0f92dfcb1dec210ca244fdae5cbe918c6050b342d619c09d31eea0cc"}, + {file = "pydantic-1.10.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:795e34e6cc065f8f498c89b894a3c6da294a936ee71e644e4bd44de048af1405"}, + {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69328e15cfda2c392da4e713443c7dbffa1505bc9d566e71e55abe14c97ddc62"}, + {file = "pydantic-1.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2031de0967c279df0d8a1c72b4ffc411ecd06bac607a212892757db7462fc494"}, + {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ba5b2e6fe6ca2b7e013398bc7d7b170e21cce322d266ffcd57cca313e54fb246"}, + {file = "pydantic-1.10.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2a7bac939fa326db1ab741c9d7f44c565a1d1e80908b3797f7f81a4f86bc8d33"}, + {file = "pydantic-1.10.12-cp311-cp311-win_amd64.whl", hash = "sha256:87afda5539d5140cb8ba9e8b8c8865cb5b1463924d38490d73d3ccfd80896b3f"}, + {file = "pydantic-1.10.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:549a8e3d81df0a85226963611950b12d2d334f214436a19537b2efed61b7639a"}, + {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598da88dfa127b666852bef6d0d796573a8cf5009ffd62104094a4fe39599565"}, + {file = "pydantic-1.10.12-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba5c4a8552bff16c61882db58544116d021d0b31ee7c66958d14cf386a5b5350"}, + {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c79e6a11a07da7374f46970410b41d5e266f7f38f6a17a9c4823db80dadf4303"}, + {file = "pydantic-1.10.12-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab26038b8375581dc832a63c948f261ae0aa21f1d34c1293469f135fa92972a5"}, + {file = "pydantic-1.10.12-cp37-cp37m-win_amd64.whl", hash = "sha256:e0a16d274b588767602b7646fa05af2782576a6cf1022f4ba74cbb4db66f6ca8"}, + {file = "pydantic-1.10.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a9dfa722316f4acf4460afdf5d41d5246a80e249c7ff475c43a3a1e9d75cf62"}, + {file = "pydantic-1.10.12-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a73f489aebd0c2121ed974054cb2759af8a9f747de120acd2c3394cf84176ccb"}, + {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bcb8cbfccfcf02acb8f1a261143fab622831d9c0989707e0e659f77a18e0"}, + {file = "pydantic-1.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fcfb5296d7877af406ba1547dfde9943b1256d8928732267e2653c26938cd9c"}, + {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f9a6fab5f82ada41d56b0602606a5506aab165ca54e52bc4545028382ef1c5d"}, + {file = "pydantic-1.10.12-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dea7adcc33d5d105896401a1f37d56b47d443a2b2605ff8a969a0ed5543f7e33"}, + {file = "pydantic-1.10.12-cp38-cp38-win_amd64.whl", hash = "sha256:1eb2085c13bce1612da8537b2d90f549c8cbb05c67e8f22854e201bde5d98a47"}, + {file = "pydantic-1.10.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef6c96b2baa2100ec91a4b428f80d8f28a3c9e53568219b6c298c1125572ebc6"}, + {file = "pydantic-1.10.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c076be61cd0177a8433c0adcb03475baf4ee91edf5a4e550161ad57fc90f523"}, + {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5a58feb9a39f481eda4d5ca220aa8b9d4f21a41274760b9bc66bfd72595b86"}, + {file = "pydantic-1.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5f805d2d5d0a41633651a73fa4ecdd0b3d7a49de4ec3fadf062fe16501ddbf1"}, + {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1289c180abd4bd4555bb927c42ee42abc3aee02b0fb2d1223fb7c6e5bef87dbe"}, + {file = "pydantic-1.10.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d1197e462e0364906cbc19681605cb7c036f2475c899b6f296104ad42b9f5fb"}, + {file = "pydantic-1.10.12-cp39-cp39-win_amd64.whl", hash = "sha256:fdbdd1d630195689f325c9ef1a12900524dceb503b00a987663ff4f58669b93d"}, + {file = "pydantic-1.10.12-py3-none-any.whl", hash = "sha256:b749a43aa51e32839c9d71dc67eb1e4221bb04af1033a32e3923d46f9effa942"}, + {file = "pydantic-1.10.12.tar.gz", hash = "sha256:0fe8a415cea8f340e7a9af9c54fc71a649b43e8ca3cc732986116b3cb135d303"}, ] [package.dependencies] @@ -1931,6 +2198,26 @@ typing-extensions = ">=4.2.0" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "pydeck" +version = "0.8.0" +description = "Widget for deck.gl maps" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydeck-0.8.0-py2.py3-none-any.whl", hash = "sha256:a8fa7757c6f24bba033af39db3147cb020eef44012ba7e60d954de187f9ed4d5"}, + {file = "pydeck-0.8.0.tar.gz", hash = "sha256:07edde833f7cfcef6749124351195aa7dcd24663d4909fd7898dbd0b6fbc01ec"}, +] + +[package.dependencies] +jinja2 = ">=2.10.1" +numpy = ">=1.16.4" + +[package.extras] +carto = ["pydeck-carto"] +jupyter = ["ipykernel (>=5.1.2)", "ipython (>=5.8.0)", "ipywidgets (>=7,<8)", "traitlets (>=4.3.2)"] + [[package]] name = "pygal" version = "3.0.0" @@ -1982,6 +2269,18 @@ dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.3.1)", "mypy", "pre-commit docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] +[[package]] +name = "pympler" +version = "1.0.1" +description = "A development tool to measure, monitor and analyze the memory behavior of Python objects." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "Pympler-1.0.1-py3-none-any.whl", hash = "sha256:d260dda9ae781e1eab6ea15bacb84015849833ba5555f141d2d9b7b7473b307d"}, + {file = "Pympler-1.0.1.tar.gz", hash = "sha256:993f1a3599ca3f4fcd7160c7545ad06310c9e12f70174ae7ae8d4e25f6c5d3fa"}, +] + [[package]] name = "pymsteams" version = "0.1.16" @@ -2115,6 +2414,21 @@ files = [ {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, ] +[[package]] +name = "pytz-deprecation-shim" +version = "0.1.0.post0" +description = "Shims to make deprecation of pytz easier" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, + {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, +] + +[package.dependencies] +tzdata = {version = "*", markers = "python_version >= \"3.6\""} + [[package]] name = "pywin32-ctypes" version = "0.2.2" @@ -2129,52 +2443,52 @@ files = [ [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" description = "YAML parser and emitter for Python" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {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-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"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {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-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {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"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {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-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"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {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-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"}, ] [[package]] @@ -2214,6 +2528,22 @@ python-dateutil = ">=2.8.1,<3.0.0" typing-extensions = ">=4.2.0,<5.0.0" websockets = ">=10.3,<11.0" +[[package]] +name = "referencing" +version = "0.30.0" +description = "JSON Referencing + Python" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.30.0-py3-none-any.whl", hash = "sha256:c257b08a399b6c2f5a3510a50d28ab5dbc7bbde049bcaf954d43c446f83ab548"}, + {file = "referencing-0.30.0.tar.gz", hash = "sha256:47237742e990457f7512c7d27486394a9aadaf876cbfaa4be65b27b4f4d47c6b"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "regex" version = "2023.6.3" @@ -2314,25 +2644,25 @@ files = [ [[package]] name = "requests" -version = "2.25.1" +version = "2.31.0" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, - {file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" -chardet = ">=3.0.2,<5" -idna = ">=2.5,<3" -urllib3 = ">=1.21.1,<1.27" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" [package.extras] -security = ["cryptography (>=1.3.4)", "pyOpenSSL (>=0.14)"] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" @@ -2386,6 +2716,132 @@ idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} [package.extras] idna2008 = ["idna"] +[[package]] +name = "rich" +version = "13.4.2" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "dev" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"}, + {file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "rpds-py" +version = "0.9.2" +description = "Python bindings to Rust's persistent data structures (rpds)" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, + {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, + {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, + {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, + {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, + {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, + {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, + {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, + {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, + {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, + {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, + {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, + {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, + {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, + {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, + {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, + {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, + {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, + {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, + {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, + {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, + {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, + {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, + {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, + {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, + {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, + {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, + {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, + {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, + {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, + {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, + {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, + {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, + {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, + {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, + {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, + {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, + {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, + {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, + {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, + {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, + {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, +] + [[package]] name = "rsa" version = "4.9" @@ -2403,14 +2859,14 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruamel-yaml" -version = "0.17.31" +version = "0.17.32" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" category = "main" optional = false python-versions = ">=3" files = [ - {file = "ruamel.yaml-0.17.31-py3-none-any.whl", hash = "sha256:3cf153f0047ced526e723097ac615d3009371779432e304dbd5596b6f3a4c777"}, - {file = "ruamel.yaml-0.17.31.tar.gz", hash = "sha256:098ed1eb6d338a684891a72380277c1e6fc4d4ae0e120de9a447275056dda335"}, + {file = "ruamel.yaml-0.17.32-py3-none-any.whl", hash = "sha256:23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447"}, + {file = "ruamel.yaml-0.17.32.tar.gz", hash = "sha256:ec939063761914e14542972a5cba6d33c23b0859ab6342f61cf070cfc600efc2"}, ] [package.dependencies] @@ -2496,14 +2952,14 @@ files = [ [[package]] name = "sentry-sdk" -version = "1.25.1" +version = "1.28.1" description = "Python client for Sentry (https://sentry.io)" category = "main" optional = true python-versions = "*" files = [ - {file = "sentry-sdk-1.25.1.tar.gz", hash = "sha256:aa796423eb6a2f4a8cd7a5b02ba6558cb10aab4ccdc0537f63a47b038c520c38"}, - {file = "sentry_sdk-1.25.1-py2.py3-none-any.whl", hash = "sha256:79afb7c896014038e358401ad1d36889f97a129dfa8031c49b3f238cd1aa3935"}, + {file = "sentry-sdk-1.28.1.tar.gz", hash = "sha256:dcd88c68aa64dae715311b5ede6502fd684f70d00a7cd4858118f0ba3153a3ae"}, + {file = "sentry_sdk-1.28.1-py2.py3-none-any.whl", hash = "sha256:6bdb25bd9092478d3a817cb0d01fa99e296aea34d404eac3ca0037faa5c2aa0a"}, ] [package.dependencies] @@ -2539,14 +2995,14 @@ tornado = ["tornado (>=5)"] [[package]] name = "setuptools" -version = "67.8.0" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, - {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] [package.extras] @@ -2587,7 +3043,7 @@ name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" category = "main" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, @@ -2636,7 +3092,6 @@ babel = ">=1.3" colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} docutils = ">=0.14,<0.18" imagesize = "*" -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} Jinja2 = ">=2.3" packaging = "*" Pygments = ">=2.0" @@ -2805,14 +3260,14 @@ sphinx = "*" [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.2" -description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" +version = "1.0.4" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, - {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, + {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, + {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, ] [package.extras] @@ -2855,14 +3310,14 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.0" +version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, - {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, + {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, + {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, ] [package.extras] @@ -2946,21 +3401,82 @@ test = ["pytest"] [[package]] name = "storage3" -version = "0.5.2" +version = "0.5.3" description = "Supabase Storage client for Python." category = "main" optional = true python-versions = ">=3.8,<4.0" files = [ - {file = "storage3-0.5.2-py3-none-any.whl", hash = "sha256:3aaba8cebf89eef6b5fc48739b8c8c8539461f2eed9ea1dc4c763dea10c6d009"}, - {file = "storage3-0.5.2.tar.gz", hash = "sha256:e9932fca869a8f9cdab9a20e5249439928cfe2d07c4524141b15fef1882a7f61"}, + {file = "storage3-0.5.3-py3-none-any.whl", hash = "sha256:5dab88b8e91afadb72fbfde4ce8fb819d6324385624ceb9dca2927fb80b3b800"}, + {file = "storage3-0.5.3.tar.gz", hash = "sha256:0c8b356d61eb021d8fcb9ca94d124754f2738c75a73babef91b2f1f60b2a13c0"}, ] [package.dependencies] -httpx = ">=0.23,<0.24" +httpx = ">=0.23,<0.25" python-dateutil = ">=2.8.2,<3.0.0" typing-extensions = ">=4.2.0,<5.0.0" +[[package]] +name = "streamlit" +version = "1.25.0" +description = "A faster way to build and share data apps" +category = "dev" +optional = false +python-versions = ">=3.8, !=3.9.7" +files = [ + {file = "streamlit-1.25.0-py2.py3-none-any.whl", hash = "sha256:3c561dca1b5430e73b7f2d66bff1d26103936bb4223912ab563ffee881fccc30"}, + {file = "streamlit-1.25.0.tar.gz", hash = "sha256:8a7c93bee8703869045804afe22e9373c4e974fdb2a3e9abe3b027df3de03119"}, +] + +[package.dependencies] +altair = ">=4.0,<6" +blinker = ">=1.0.0,<2" +cachetools = ">=4.0,<6" +click = ">=7.0,<9" +gitpython = ">=3.0.7,<3.1.19 || >3.1.19,<4" +importlib-metadata = ">=1.4,<7" +numpy = ">=1.19.3,<2" +packaging = ">=16.8,<24" +pandas = ">=1.3.0,<3" +pillow = ">=7.1.0,<10" +protobuf = ">=3.20,<5" +pyarrow = ">=6.0" +pydeck = ">=0.8,<1" +pympler = ">=0.9,<2" +python-dateutil = ">=2.7.3,<3" +requests = ">=2.18,<3" +rich = ">=10.14.0,<14" +tenacity = ">=8.1.0,<9" +toml = ">=0.10.1,<2" +tornado = ">=6.0.3,<7" +typing-extensions = ">=4.1.0,<5" +tzlocal = ">=1.1,<5" +validators = ">=0.2,<1" +watchdog = {version = ">=2.1.5", markers = "platform_system != \"Darwin\""} + +[package.extras] +snowflake = ["snowflake-snowpark-python"] + +[[package]] +name = "streamlit-pydantic" +version = "0.6.0" +description = "Auto-generate Streamlit UI from Pydantic Models & Dataclasses." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "streamlit-pydantic-0.6.0.tar.gz", hash = "sha256:3bc5d51af085eb6791b360f569f1a541681ddcc51579b09a1e2ab54639b39d49"}, + {file = "streamlit_pydantic-0.6.0-py3-none-any.whl", hash = "sha256:7a69ec6519f5de1b21bd9737891c61d8fea33d7727824ab19c4c65d49f136304"}, +] + +[package.dependencies] +importlib-resources = "*" +pydantic = ">=1.9" +streamlit = ">=1.14.0" + +[package.extras] +dev = ["black", "build", "colorama", "flake8", "isort", "lazydocs", "mypy", "pydocstyle", "pytest", "pytest-cov", "pytest-mock", "rope", "setuptools", "twine", "types-dataclasses", "universal-build", "wheel"] + [[package]] name = "strenum" version = "0.4.15" @@ -3103,35 +3619,47 @@ files = [ [[package]] name = "tomlkit" -version = "0.11.8" +version = "0.12.1" description = "Style preserving TOML library" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, - {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, + {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, + {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, +] + +[[package]] +name = "toolz" +version = "0.12.0" +description = "List processing tools and functional utilities" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "toolz-0.12.0-py3-none-any.whl", hash = "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f"}, + {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, ] [[package]] name = "tornado" -version = "6.2" +version = "6.3.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." category = "dev" optional = false -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"}, - {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"}, - {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"}, - {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"}, - {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"}, + {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:c367ab6c0393d71171123ca5515c61ff62fe09024fa6bf299cd1339dc9456829"}, + {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b46a6ab20f5c7c1cb949c72c1994a4585d2eaa0be4853f50a03b5031e964fc7c"}, + {file = "tornado-6.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2de14066c4a38b4ecbbcd55c5cc4b5340eb04f1c5e81da7451ef555859c833f"}, + {file = "tornado-6.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05615096845cf50a895026f749195bf0b10b8909f9be672f50b0fe69cba368e4"}, + {file = "tornado-6.3.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b17b1cf5f8354efa3d37c6e28fdfd9c1c1e5122f2cb56dac121ac61baa47cbe"}, + {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:29e71c847a35f6e10ca3b5c2990a52ce38b233019d8e858b755ea6ce4dcdd19d"}, + {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:834ae7540ad3a83199a8da8f9f2d383e3c3d5130a328889e4cc991acc81e87a0"}, + {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6a0848f1aea0d196a7c4f6772197cbe2abc4266f836b0aac76947872cd29b411"}, + {file = "tornado-6.3.2-cp38-abi3-win32.whl", hash = "sha256:7efcbcc30b7c654eb6a8c9c9da787a851c18f8ccd4a5a3a95b05c7accfa068d2"}, + {file = "tornado-6.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:0c325e66c8123c606eea33084976c832aa4e766b7dff8aedd7587ea44a604cdf"}, + {file = "tornado-6.3.2.tar.gz", hash = "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba"}, ] [[package]] @@ -3202,26 +3730,26 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6. [[package]] name = "types-cachetools" -version = "5.3.0.5" +version = "5.3.0.6" description = "Typing stubs for cachetools" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-cachetools-5.3.0.5.tar.gz", hash = "sha256:67fa46d51a650896770aee0ba80f0e61dc4a7d1373198eec1bc0622263eaa256"}, - {file = "types_cachetools-5.3.0.5-py3-none-any.whl", hash = "sha256:c0c5fa00199017d974c935bf043c467d5204e4f835141e489b48765b5ac1d960"}, + {file = "types-cachetools-5.3.0.6.tar.gz", hash = "sha256:595f0342d246c8ba534f5a762cf4c2f60ecb61e8002b8b2277fd5cf791d4e851"}, + {file = "types_cachetools-5.3.0.6-py3-none-any.whl", hash = "sha256:f7f8a25bfe306f2e6bc2ad0a2f949d9e72f2d91036d509c36d3810bf728bc6e1"}, ] [[package]] name = "types-click-spinner" -version = "0.1.13.4" +version = "0.1.13.5" description = "Typing stubs for click-spinner" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-click-spinner-0.1.13.4.tar.gz", hash = "sha256:c2dbfbff911b827e03f73966ceaa284a14e4a7e64a6e84abdf517f09d6b93f49"}, - {file = "types_click_spinner-0.1.13.4-py3-none-any.whl", hash = "sha256:ffe4a009a88ea1b17d5d40ee2fbf205f2533d67657367c570d36444c99dc7c47"}, + {file = "types-click-spinner-0.1.13.5.tar.gz", hash = "sha256:6d6471916d26ac3c6d3c25e1f304d6ac6bb205cda293731bca266591f0030b76"}, + {file = "types_click_spinner-0.1.13.5-py3-none-any.whl", hash = "sha256:f42bfc90f047a7f66d918b3e5d0069c42f8a3d4fb0a804a258c086f16cbb20b7"}, ] [[package]] @@ -3238,26 +3766,26 @@ files = [ [[package]] name = "types-pyyaml" -version = "6.0.12.10" +version = "6.0.12.11" description = "Typing stubs for PyYAML" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-PyYAML-6.0.12.10.tar.gz", hash = "sha256:ebab3d0700b946553724ae6ca636ea932c1b0868701d4af121630e78d695fc97"}, - {file = "types_PyYAML-6.0.12.10-py3-none-any.whl", hash = "sha256:662fa444963eff9b68120d70cda1af5a5f2aa57900003c2006d7626450eaae5f"}, + {file = "types-PyYAML-6.0.12.11.tar.gz", hash = "sha256:7d340b19ca28cddfdba438ee638cd4084bde213e501a3978738543e27094775b"}, + {file = "types_PyYAML-6.0.12.11-py3-none-any.whl", hash = "sha256:a461508f3096d1d5810ec5ab95d7eeecb651f3a15b71959999988942063bf01d"}, ] [[package]] name = "types-requests" -version = "2.31.0.1" +version = "2.31.0.2" description = "Typing stubs for requests" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-requests-2.31.0.1.tar.gz", hash = "sha256:3de667cffa123ce698591de0ad7db034a5317457a596eb0b4944e5a9d9e8d1ac"}, - {file = "types_requests-2.31.0.1-py3-none-any.whl", hash = "sha256:afb06ef8f25ba83d59a1d424bd7a5a939082f94b94e90ab5e6116bd2559deaa3"}, + {file = "types-requests-2.31.0.2.tar.gz", hash = "sha256:6aa3f7faf0ea52d728bb18c0a0d1522d9bfd8c72d26ff6f61bfc3d06a411cf40"}, + {file = "types_requests-2.31.0.2-py3-none-any.whl", hash = "sha256:56d181c85b5925cbc59f4489a57e72a8b2166f18273fd8ba7b6fe0c0b986f12a"}, ] [package.dependencies] @@ -3277,38 +3805,38 @@ files = [ [[package]] name = "types-toml" -version = "0.10.8.6" +version = "0.10.8.7" description = "Typing stubs for toml" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-toml-0.10.8.6.tar.gz", hash = "sha256:6d3ac79e36c9ee593c5d4fb33a50cca0e3adceb6ef5cff8b8e5aef67b4c4aaf2"}, - {file = "types_toml-0.10.8.6-py3-none-any.whl", hash = "sha256:de7b2bb1831d6f7a4b554671ffe5875e729753496961b3e9b202745e4955dafa"}, + {file = "types-toml-0.10.8.7.tar.gz", hash = "sha256:58b0781c681e671ff0b5c0319309910689f4ab40e8a2431e205d70c94bb6efb1"}, + {file = "types_toml-0.10.8.7-py3-none-any.whl", hash = "sha256:61951da6ad410794c97bec035d59376ce1cbf4453dc9b6f90477e81e4442d631"}, ] [[package]] name = "types-urllib3" -version = "1.26.25.13" +version = "1.26.25.14" description = "Typing stubs for urllib3" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-urllib3-1.26.25.13.tar.gz", hash = "sha256:3300538c9dc11dad32eae4827ac313f5d986b8b21494801f1bf97a1ac6c03ae5"}, - {file = "types_urllib3-1.26.25.13-py3-none-any.whl", hash = "sha256:5dbd1d2bef14efee43f5318b5d36d805a489f6600252bb53626d4bfafd95e27c"}, + {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, + {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, ] [[package]] name = "typing-extensions" -version = "4.6.3" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] @@ -3316,7 +3844,7 @@ name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" category = "main" -optional = true +optional = false python-versions = ">=2" files = [ {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, @@ -3325,18 +3853,18 @@ files = [ [[package]] name = "tzlocal" -version = "5.0.1" +version = "4.3.1" description = "tzinfo object for the local timezone" category = "main" -optional = true +optional = false python-versions = ">=3.7" files = [ - {file = "tzlocal-5.0.1-py3-none-any.whl", hash = "sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f"}, - {file = "tzlocal-5.0.1.tar.gz", hash = "sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803"}, + {file = "tzlocal-4.3.1-py3-none-any.whl", hash = "sha256:67d7e7f4ce0a98e9dfde2e02474c60fe846ed032d78b555c554c2e9cba472d84"}, + {file = "tzlocal-4.3.1.tar.gz", hash = "sha256:ee32ef8c20803c19a96ed366addd3d4a729ef6309cb5c7359a0cc2eeeb7fa46a"}, ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} +pytz-deprecation-shim = "*" tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] @@ -3344,48 +3872,66 @@ devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pyte [[package]] name = "urllib3" -version = "1.26.16" +version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7" files = [ - {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, - {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, + {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, + {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "validators" +version = "0.20.0" +description = "Python Data Validation for Humans™." +category = "dev" +optional = false +python-versions = ">=3.4" +files = [ + {file = "validators-0.20.0.tar.gz", hash = "sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a"}, +] + +[package.dependencies] +decorator = ">=3.4.0" + +[package.extras] +test = ["flake8 (>=2.4.0)", "isort (>=4.2.2)", "pytest (>=2.2.3)"] [[package]] name = "virtualenv" -version = "20.23.0" +version = "20.24.2" description = "Virtual Python Environment builder" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, - {file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, + {file = "virtualenv-20.24.2-py3-none-any.whl", hash = "sha256:43a3052be36080548bdee0b42919c88072037d50d56c28bd3f853cbe92b953ff"}, + {file = "virtualenv-20.24.2.tar.gz", hash = "sha256:fd8a78f46f6b99a67b7ec5cf73f92357891a7b3a40fd97637c27f854aae3b9e0"}, ] [package.dependencies] -distlib = ">=0.3.6,<1" -filelock = ">=3.11,<4" -platformdirs = ">=3.2,<4" +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<4" [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.7.1)", "time-machine (>=2.9)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "watchdog" version = "2.3.1" description = "Filesystem events monitoring" category = "main" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1f1200d4ec53b88bf04ab636f9133cb703eb19768a39351cee649de21a33697"}, @@ -3577,18 +4123,18 @@ watchdog = ["watchdog"] [[package]] name = "wheel" -version = "0.40.0" +version = "0.41.0" description = "A built-package format for Python" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "wheel-0.40.0-py3-none-any.whl", hash = "sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247"}, - {file = "wheel-0.40.0.tar.gz", hash = "sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873"}, + {file = "wheel-0.41.0-py3-none-any.whl", hash = "sha256:7e9be3bbd0078f6147d82ed9ed957e323e7708f57e134743d2edef3a7b7972a9"}, + {file = "wheel-0.41.0.tar.gz", hash = "sha256:55a0f0a5a84869bce5ba775abfd9c462e3a6b1b7b7ec69d72c0b83d673a5114d"}, ] [package.extras] -test = ["pytest (>=6.0.0)"] +test = ["pytest (>=6.0.0)", "setuptools (>=65)"] [[package]] name = "witchhazel" @@ -3604,24 +4150,24 @@ files = [ [[package]] name = "zipp" -version = "3.15.0" +version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] all = ["CairoSVG", "Flask", "better-exceptions", "datadog-api-client", "dulwich", "grafana-api", "kafka-python", "poetry-core", "prometheus-api-client", "sentry-sdk", "supabase", "tabulate", "watchdog"] [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "a10fccfce2f10d3fdc3533d6421dae01ba9113b91408ea9fb0bef5bdfdc3433d" +python-versions = "^3.10" +content-hash = "e9f315b53fbbcf05ed301865dfb12dfbcffca68b76122eefd8144ba96eda68c8" diff --git a/pyproject.toml b/pyproject.toml index 12463252c..b473bcc16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ robusta = "robusta.cli.main:app" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" typer = "^0.4.1" colorlog = "^5.0.1" pydantic = "^1.8.1" @@ -112,6 +112,8 @@ all = ["Flask", "grafana-api", "watchdog", "dulwich", "better-exceptions", "Cair [tool.poetry.group.dev.dependencies] sphinx-jinja = { git = "https://github.com/robusta-dev/sphinx-jinja.git" } sphinx-reredirects = "^0.1.1" +streamlit = "^1.25.0" +streamlit-pydantic = "^0.6.0" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/scripts/generate_playbook_descriptions.py b/scripts/generate_playbook_descriptions.py old mode 100644 new mode 100755 index 417607cb5..bfb119162 --- a/scripts/generate_playbook_descriptions.py +++ b/scripts/generate_playbook_descriptions.py @@ -6,7 +6,14 @@ from typing import Callable from pydantic import BaseModel +from robusta.api import Action +from robusta.core.playbooks.generation import ExamplesGenerator + +# creating this is slightly expensive so we create one global instance and re-use it +generator = ExamplesGenerator() +triggers = dict((v, k) for k, v in generator.triggers_to_yaml.items()) +print(triggers) class PlaybookDescription(BaseModel): function_name: str @@ -32,13 +39,11 @@ def get_params_schema(func): return action_params.schema() -def load_scripts(scripts_root): - # install_requirements(os.path.join(scripts_root, 'requirements.txt')) - +def find_playbook_actions(scripts_root): python_files = glob.glob(f"{scripts_root}/*.py") for script in python_files: - print(f"loading playbooks {script}") + print(f"found playbook file: {script}") filename = os.path.basename(script) (module_name, ext) = os.path.splitext(filename) spec = importlib.util.spec_from_file_location(module_name, script) @@ -47,9 +52,13 @@ def load_scripts(scripts_root): playbooks = inspect.getmembers( module, - lambda f: inspect.isfunction(f) and getattr(f, "__playbook", None) is not None, + lambda f: Action.is_action(f), ) for _, func in playbooks: + print("found playbook", func) + action = Action(func) + print("action", action) + description = PlaybookDescription( function_name=func.__name__, builtin_trigger_params=func.__playbook["default_trigger_params"], @@ -62,11 +71,10 @@ def load_scripts(scripts_root): def main(): - # TODO Arik - Need to be fixed in order to expose actions schema parser = argparse.ArgumentParser(description="Generate playbook descriptions") - parser.add_argument("directory", type=str, help="directory containing the playbooks") + parser.add_argument("--directory", type=str, help="directory containing the playbooks", default="./playbooks/robusta_playbooks") args = parser.parse_args() - load_scripts(args.directory) + find_playbook_actions(args.directory) if __name__ == "__main__": diff --git a/scripts/playbook_builder.py b/scripts/playbook_builder.py index b1582802b..6e45c4aca 100644 --- a/scripts/playbook_builder.py +++ b/scripts/playbook_builder.py @@ -5,6 +5,14 @@ import streamlit_pydantic as sp import yaml from pydantic import BaseModel, Field +from collections import defaultdict +from robusta.api import Action + +from robusta.core.playbooks.generation import ExamplesGenerator + +# creating this is slightly expensive so we create one global instance and re-use it +generator = ExamplesGenerator() +triggers = dict((v, k) for k, v in generator.triggers_to_yaml.items()) st.set_page_config( page_title="Playbook Builder", @@ -28,19 +36,7 @@ action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) - -# Temporary code -class K8sBaseTrigger(BaseModel): - kind: str - name_prefix: str = Field(None, description="Give it a value") - namespace_prefix: str = Field(None, description="Name of a specific namespace") - labels_selector: str = None - - -class SomeOtherTriggerParams(BaseModel): - namespace_prefix: str = None - labels_selector: str = None - +trigger_to_actions = defaultdict(list) class PrometheusParams(BaseModel): """ @@ -132,20 +128,6 @@ class LogEnricherParams(ActionParams): previous: bool = False filter_regex: Optional[str] = None - -triggers = { - "on_oom_kill": { - "about": "Fires when a Pod is crash looping. It has the following parameters:", - "available_actions": ["logs_enricher", "template_enricher"], - "params": K8sBaseTrigger, - }, - "pod_restart": { - "about": "Fires when a Pod is updated. Creations and deletions are excluded.", - "available_actions": ["template_enricher"], - "params": K8sBaseTrigger, - }, -} - actions = { "logs_enricher": { "about": """Fetch and attach Pod logs. The pod to fetch logs for is determined by the alert’s pod label from Prometheus. @@ -164,9 +146,8 @@ class LogEnricherParams(ActionParams): # TRIGGER with trigger_expander: - trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") - st.markdown(triggers[trigger_name]["about"]) + #st.markdown(triggers[trigger_name]["about"]) if st.button("Continue", key="button1"): st.session_state.expander_state = [False, True, False, False, False] @@ -176,7 +157,7 @@ class LogEnricherParams(ActionParams): # TRIGGER PARAMETER with trigger_parameter_expander: # st.header("Available Parameters") - trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]["params"]) + trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) if st.button("Continue", key="button2"): st.session_state.expander_state = [False, False, True, False, False] @@ -186,7 +167,7 @@ class LogEnricherParams(ActionParams): # ACTION with action_expander: - action_name = st.selectbox("Choose an action", triggers[trigger_name]["available_actions"], key="actions") + action_name = st.selectbox("Choose an action", trigger_to_actions[trigger_name], key="actions") st.markdown(actions[action_name]["about"]) From c10a10c5e5bee593fef885cf5017745b56d2ae4b Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Fri, 28 Jul 2023 21:50:54 +0300 Subject: [PATCH 03/36] get actions working --- scripts/generate_playbook_descriptions.py | 34 +++--- scripts/playbook_builder.py | 124 ++-------------------- src/robusta/core/playbooks/generation.py | 55 ++++++++++ 3 files changed, 83 insertions(+), 130 deletions(-) diff --git a/scripts/generate_playbook_descriptions.py b/scripts/generate_playbook_descriptions.py index bfb119162..f055897c3 100755 --- a/scripts/generate_playbook_descriptions.py +++ b/scripts/generate_playbook_descriptions.py @@ -10,11 +10,6 @@ from robusta.core.playbooks.generation import ExamplesGenerator -# creating this is slightly expensive so we create one global instance and re-use it -generator = ExamplesGenerator() -triggers = dict((v, k) for k, v in generator.triggers_to_yaml.items()) -print(triggers) - class PlaybookDescription(BaseModel): function_name: str docs: str = None @@ -41,6 +36,7 @@ def get_params_schema(func): def find_playbook_actions(scripts_root): python_files = glob.glob(f"{scripts_root}/*.py") + actions = [] for script in python_files: print(f"found playbook file: {script}") @@ -57,24 +53,30 @@ def find_playbook_actions(scripts_root): for _, func in playbooks: print("found playbook", func) action = Action(func) - print("action", action) + actions.append(action) + + #description = PlaybookDescription( + # function_name=func.__name__, + # builtin_trigger_params=func.__playbook["default_trigger_params"], + # docs=inspect.getdoc(func), + # src=inspect.getsource(func), + # src_file=inspect.getsourcefile(func), + # action_params=get_params_schema(func), + #) + #print(description.json(), "\n\n") - description = PlaybookDescription( - function_name=func.__name__, - builtin_trigger_params=func.__playbook["default_trigger_params"], - docs=inspect.getdoc(func), - src=inspect.getsource(func), - src_file=inspect.getsourcefile(func), - action_params=get_params_schema(func), - ) - print(description.json(), "\n\n") + return actions def main(): parser = argparse.ArgumentParser(description="Generate playbook descriptions") parser.add_argument("--directory", type=str, help="directory containing the playbooks", default="./playbooks/robusta_playbooks") args = parser.parse_args() - find_playbook_actions(args.directory) + actions = find_playbook_actions(args.directory) + generator = ExamplesGenerator() + triggers = generator.get_all_triggers() + trigger_to_actions = generator.get_triggers_to_actions(actions) + print(trigger_to_actions) if __name__ == "__main__": diff --git a/scripts/playbook_builder.py b/scripts/playbook_builder.py index 6e45c4aca..77b625e88 100644 --- a/scripts/playbook_builder.py +++ b/scripts/playbook_builder.py @@ -1,3 +1,4 @@ +# run with poetry run streamlit run scripts/playbook_builder.py from collections import OrderedDict from typing import List, Optional @@ -8,11 +9,13 @@ from collections import defaultdict from robusta.api import Action -from robusta.core.playbooks.generation import ExamplesGenerator +from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions -# creating this is slightly expensive so we create one global instance and re-use it generator = ExamplesGenerator() -triggers = dict((v, k) for k, v in generator.triggers_to_yaml.items()) +triggers = generator.get_all_triggers() +actions = find_playbook_actions("./playbooks/robusta_playbooks") +actions_by_name = { a.action_name : a for a in actions } +triggers_to_actions = generator.get_triggers_to_actions(actions) st.set_page_config( page_title="Playbook Builder", @@ -36,113 +39,6 @@ action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) -trigger_to_actions = defaultdict(list) - -class PrometheusParams(BaseModel): - """ - :var prometheus_url: Prometheus url. If omitted, we will try to find a prometheus instance in the same cluster - :var prometheus_auth: Prometheus auth header to be used in Authorization header. If omitted, we will not add any auth header - - :example prometheus_url: "http://prometheus-k8s.monitoring.svc.cluster.local:9090" - :example prometheus_auth: Basic YWRtaW46cGFzc3dvcmQ= - """ - - prometheus_url: Optional[str] = None - prometheus_auth: Optional[str] = None - - -class ResourceGraphEnricherParams(PrometheusParams): - """ - :var resource_type: one of: CPU, Memory, Disk (see ResourceChartResourceType) - :var graph_duration_minutes: Graph duration is minutes. Default is 60. - - :example resource_type: Memory - """ - - resource_type: str - graph_duration_minutes: int = 60 - - previous: bool = Field(False, description="descr text") - - -class CustomGraphEnricherParams(PrometheusParams): - """ - :var promql_query: Promql query. You can use $pod, $node and $node_internal_ip to template (see example). For more information, see https://prometheus.io/docs/prometheus/latest/querying/basics/ - :var graph_title: A nicer name for the Prometheus query. - :var graph_duration_minutes: Graph duration is minutes. - :var chart_values_format: Customize the y-axis labels with one of: Plain, Bytes, Percentage (see ChartValuesFormat) - - :example promql_query: instance:node_cpu_utilisation:rate5m{job="node-exporter", instance=~"$node_internal_ip:[0-9]+", cluster=""} != 0 - :example graph_title: CPU Usage for this nod - """ - - promql_query: str - graph_title: Optional[str] = None - graph_duration_minutes: int = 60 - chart_values_format: str = "Plain" - - -class ActionParams(BaseModel): - """ - Base class for all Action parameter classes. - """ - - def post_initialization(self): - """ - This function can be used to run post initialization logic on the action params - """ - pass - - pass - - -class GitAuditParams(ActionParams): - """ - :var cluster_name: This cluster name. Changes will be audited under this cluster name. - :var git_url: Audit Git repository url. - :var git_key: Git repository deployment key with *write* access. To set this up `generate a private/public key pair for GitHub `_. - :var ignored_changes: List of changes that shouldn't be audited. - - :example git_url: "git@github.com:arikalon1/robusta-audit.git" - """ - - cluster_name: str - git_url: str = Field(..., description="Example: https://hello.dev") - git_key: str - ignored_changes: str - - -class LogEnricherParams(ActionParams): - """ - :var container_name: Specific container to get logs from - :var warn_on_missing_label: Send a warning if the alert doesn't have a pod label - :var regex_replacer_patterns: regex patterns to replace text, for example for security reasons (Note: Replacements are executed in the given order) - :var regex_replacement_style: one of SAME_LENGTH_ASTERISKS or NAMED (See RegexReplacementStyle) - :var filter_regex: only shows lines that match the regex - """ - - container_name: Optional[str] - warn_on_missing_label: bool = False - regex_replacer_patterns: Optional[List] = None - regex_replacement_style: Optional[str] = None - previous: bool = False - filter_regex: Optional[str] = None - -actions = { - "logs_enricher": { - "about": """Fetch and attach Pod logs. The pod to fetch logs for is determined by the alert’s pod label from Prometheus. - By default, if the alert has no pod this enricher will silently do nothing.""", - "params": LogEnricherParams, - }, - "template_enricher": { - "about": """Enrich the finding with the node's status conditions. - Can help troubleshooting Node issues.""", - "params": PrometheusParams, - }, -} - -# End temporary code - # TRIGGER with trigger_expander: @@ -166,10 +62,10 @@ class LogEnricherParams(ActionParams): # ACTION with action_expander: + relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] + action_name = st.selectbox("Choose an action", relevant_actions, key="actions") - action_name = st.selectbox("Choose an action", trigger_to_actions[trigger_name], key="actions") - - st.markdown(actions[action_name]["about"]) + #st.markdown(actions[action_name]["about"]) if st.button("Continue", key="button3"): st.session_state.expander_state = [False, False, False, True, False] @@ -179,7 +75,7 @@ class LogEnricherParams(ActionParams): # ACTION PARAMETER with action_parameter_expander: - action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=actions[action_name]["params"]) + action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=actions_by_name[action_name].params_type) if st.button("Continue", key="button4"): st.session_state.expander_state = [False, False, False, False, True] diff --git a/src/robusta/core/playbooks/generation.py b/src/robusta/core/playbooks/generation.py index 9873d48d1..af600a777 100644 --- a/src/robusta/core/playbooks/generation.py +++ b/src/robusta/core/playbooks/generation.py @@ -11,6 +11,15 @@ from robusta.core.playbooks.trigger import Trigger from robusta.integrations.kubernetes.autogenerated.events import KubernetesAnyChangeEvent, KubernetesResourceEvent from robusta.utils.json_schema import example_from_schema +import argparse +import glob +import importlib +import inspect +import os +from typing import Callable + +from pydantic import BaseModel +from robusta.api import Action def get_possible_types(t): @@ -51,6 +60,20 @@ def __init__(self): for e in possible_events: self.events_to_triggers[e].add(t) + def get_all_triggers(self): + """ + Return a dict with all triggers, in the format { "on_trigger_..." : TriggerClass } + """ + return dict((v, k) for k, v in self.triggers_to_yaml.items()) + + def get_triggers_to_actions(self, all_actions: List[Action]): + triggers_to_actions = defaultdict(list) + for action in all_actions: + triggers = self.events_to_triggers[action.event_type] + for t in triggers: + triggers_to_actions[self.triggers_to_yaml[t]].append(action) + return triggers_to_actions + def get_possible_triggers(self, event_cls: Type[ExecutionBaseEvent]) -> List[str]: name = event_cls.__name__ # TODO: why? @@ -129,3 +152,35 @@ def generate_example_config( action_example = example_from_schema(action_schema) example["customPlaybooks"][0]["actions"][0][action_metadata.action_name] = action_example return yaml.dump(example, Dumper=NoAliasDumper) + + +def find_playbook_actions(scripts_root): + python_files = glob.glob(f"{scripts_root}/*.py") + actions = [] + + for script in python_files: + filename = os.path.basename(script) + (module_name, ext) = os.path.splitext(filename) + spec = importlib.util.spec_from_file_location(module_name, script) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + playbooks = inspect.getmembers( + module, + lambda f: Action.is_action(f), + ) + for _, func in playbooks: + action = Action(func) + actions.append(action) + + #description = PlaybookDescription( + # function_name=func.__name__, + # builtin_trigger_params=func.__playbook["default_trigger_params"], + # docs=inspect.getdoc(func), + # src=inspect.getsource(func), + # src_file=inspect.getsourcefile(func), + # action_params=get_params_schema(func), + #) + #print(description.json(), "\n\n") + + return actions \ No newline at end of file From ee6e93faab2e498ff71d440d847f875bfd4bb1f1 Mon Sep 17 00:00:00 2001 From: Avi-Robusta <97387909+Avi-Robusta@users.noreply.github.com> Date: Tue, 25 Jul 2023 15:24:02 +0300 Subject: [PATCH 04/36] fixing wrong functions (#1006) --- playbooks/robusta_playbooks/event_enrichments.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/playbooks/robusta_playbooks/event_enrichments.py b/playbooks/robusta_playbooks/event_enrichments.py index 60216f5df..cc62aaac0 100644 --- a/playbooks/robusta_playbooks/event_enrichments.py +++ b/playbooks/robusta_playbooks/event_enrichments.py @@ -265,10 +265,9 @@ def resource_events_diff(event: KubernetesAnyChangeEvent): container_info = [ContainerInfo.get_container_info_k8(container) for container in containers] if containers else [] volumes_info = [VolumeInfo.get_volume_info(volume) for volume in volumes] if volumes else [] - config = ServiceConfig(labels=meta.labels or {}, containers=container_info, - volumes=volumes_info) - ready_pods = extract_total_pods(new_resource) - total_pods = extract_ready_pods(new_resource) + config = ServiceConfig(labels=meta.labels or {}, containers=container_info, volumes=volumes_info) + ready_pods = extract_ready_pods(new_resource) + total_pods = extract_total_pods(new_resource) is_helm_release = is_release_managed_by_helm(annotations=new_resource.metadata.annotations, labels=new_resource.metadata.labels) From 32534793220cae17e00d59cf23c8be812ac89d11 Mon Sep 17 00:00:00 2001 From: Markus Lippert Date: Wed, 26 Jul 2023 14:28:55 +0200 Subject: [PATCH 05/36] feat(helm): update kube-prometheus-stack to 47.2.0 (#964) * update kube-prometheus-stack to 47.2.0 --- docs/setup-robusta/upgrade.rst | 20 +++++++++--------- helm/robusta/Chart.lock | 6 +++--- helm/robusta/Chart.yaml | 2 +- .../charts/kube-prometheus-stack-43.2.1.tgz | Bin 413380 -> 0 bytes .../charts/kube-prometheus-stack-47.2.0.tgz | Bin 0 -> 484786 bytes 5 files changed, 14 insertions(+), 14 deletions(-) delete mode 100644 helm/robusta/charts/kube-prometheus-stack-43.2.1.tgz create mode 100644 helm/robusta/charts/kube-prometheus-stack-47.2.0.tgz diff --git a/docs/setup-robusta/upgrade.rst b/docs/setup-robusta/upgrade.rst index 9cc9c73aa..88bbf7f25 100644 --- a/docs/setup-robusta/upgrade.rst +++ b/docs/setup-robusta/upgrade.rst @@ -7,7 +7,7 @@ What type of upgrade do I need? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You need a :ref:`Manual Upgrade` when both: -* Robusta's old version is lower than 0.10.8 (run ``helm list`` to check) +* Robusta's old version is lower than 0.10.17 (run ``helm list`` to check) * The embedded Prometheus is enabled (``enablePrometheusStack: true``) In all other cases, do a :ref:`Simple Upgrade`. @@ -53,7 +53,7 @@ Why are manual upgrades necessary? Robusta bundles kube-prometheus-stack, which uses `CRDs `_. Helm can't update CRDs, so we update them ourselves. See the `Helm Documentation on CRDs `_ for details. -Upgrading from older versions (0.10.8 and below) +Upgrading from older versions (0.10.17 and below) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. The node-exporter daemonset and admission webhooks needs to be manually removed prior to upgrading: @@ -70,14 +70,14 @@ Upgrading from older versions (0.10.8 and below) .. code-block:: bash - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml - kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml + kubectl replace -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml 3. Update Robusta with Helm. If you've lost ``generated_values.yaml``, you can :ref:`extract it from the cluster.` diff --git a/helm/robusta/Chart.lock b/helm/robusta/Chart.lock index 070953761..d347631c5 100644 --- a/helm/robusta/Chart.lock +++ b/helm/robusta/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: kube-prometheus-stack repository: https://prometheus-community.github.io/helm-charts - version: 43.2.1 -digest: sha256:77e49fe26a57dfee92f546052e2cdb716f2df48e5c46a279f7105b45c1fb946b -generated: "2023-01-01T19:29:21.745248+02:00" + version: 47.2.0 +digest: sha256:4d9c23a8f59632bb8673875ccdf927045058183d647183e26c4c3b6a05732214 +generated: "2023-07-03T17:40:32.694323+02:00" diff --git a/helm/robusta/Chart.yaml b/helm/robusta/Chart.yaml index faf210d2f..13e2a7e53 100644 --- a/helm/robusta/Chart.yaml +++ b/helm/robusta/Chart.yaml @@ -11,6 +11,6 @@ appVersion: 0.0.0 dependencies: - name: kube-prometheus-stack - version: 43.2.1 + version: 47.2.0 condition: enablePrometheusStack repository: "https://prometheus-community.github.io/helm-charts" \ No newline at end of file diff --git a/helm/robusta/charts/kube-prometheus-stack-43.2.1.tgz b/helm/robusta/charts/kube-prometheus-stack-43.2.1.tgz deleted file mode 100644 index d23d60bc20b3801a6539c340767e3d0ea9d5d380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413380 zcmV)HK)t^oiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMYacihI6I68mxQ`95m4s zx}Z|$OIla|_6hzQkH_Oj4pWRn~a{na%(WViaYAzZz*&u{U&1baGi*A~8F{*gM8pS4Lzoo^3 zWxM%!s8MsKCggI15JEE2(3(vMoFH;6I$1DyK}aX730Y{}s>x_H=kR$U>QQw13Q^Zx z!}W5sU{#$J28c@FzG;<~jMn5(iXT{^Zw_0uOj0f6sCVR7C*)dA$flMZ+uWcn{|l3f zi)KR3cQgbC2I=K)MO(gg=k8yp@r%0SX0ejF)ewaa@Npk#mWt0 zrv&3srbSj`lMO;7YlY%k$Yq$<&_d;QvRw3*?A(p;VZQq?zn_k&5hZ*6wiQw{xiX%p z8`Cahw&5op)#Lu4=9126Ls!OQpReiOeRXY*kMf76%aW-=@;2Gp4lKCSPNZq@-#w6;zgL+nk}MG-uL6BC@NPB88}@ykRA|;CewyQFJwH z@VdbVI21*+FspvfOGX$~OQOXFA$SZKVNIE7k+G(X2UJv@(oB+CG-gG3GsjM%F?7m2 z)e9Cq+#uvzd%W|Fg)r;;k=KS7W(D2Hl3v&?=oFKMXf$hd4_5SNv|Tkd^B7U3n2wvA zR$?x)V!F3Co$eJ69zM$3X1;O8mKQ>naLL@zHnQl5W$B!K?3n5#T7b5S@{CULJ^D}l4KACgc$ZpETf6UDT zGx2bK-MhFs%zl1GrC#teHT0Ex7rq)it^c98(mZdq|MKfs2A?(Tr|j6g3g4?jX#F4Z z(R7*g1dk=3PnV%-&81KkJzJu2DG?zntZ>^>MXM)%lsZ|A}E38i#rw)^PIFL$1>Sy`|L zdppzd!^e*vZ_HT(q`#by&E4_tZnm?V?LI!)c{tg9I2k|AzkK{?@8RQY{N-dk-u!tO zY54x1)2d_YQwe}q-v0*=_x5&Ijz8c3U*f+l@{G-BS80NKPG&+5)8u?(i<~UD zB3uzl{%il$%WNiOO|@nvnemF52G3YgQOU?TmE3Ugz}ik3X$^Z<65eP*mZFnHv%0OQ zW-8y<*xE7-DsaCP?kC|5X)9VVB4%rNbTiEFY1>Y|Cl#HtN^NXy0Y~xeIg^r?Y(h3S z0knGnjBv@?N-PZ%4jrkM7R-GKKUO{uBRhMn+|4($qMa5&1|YmPNXv5cguSJ8TUktc zLgk!k%YlXtfDL_QdcUHP9mRfCi3<`jvUXhsHY`~~E*89Eq>zki$M*APE}2rUi*>+z zi?0Py-Bf9=JI!FB4XjyLRk&tmQzWw-nt^Rz4KDpl*cn)?wyl=%M^&XC8x$@YY&jwC z-fwIXRn!Zr7863J#m?@7jV)3yp}~YudUjTq0Q{+$so7CHz9?{+(MA%H8MqacOkcL` zk!d>FAh=j;LX4DeNP&A!2(6gZHErmeN&lV@ri(KAS%_xF=SQp(v@{|_c!LwsWj`a%5kw^Wmhq|Z}xe0H2(d%;l>J`=vBk?g^*|Q6H&6>Pp5bp=sSKr)OA3E zgAc#;iYs`zLCDq?Ibvm3FmnR~%ER+*B)`_cpl$owy;6vXCS)_eziC0(du%ROa@{tF zMZR!xq3M3mCl0oc^^N8u`&EfbAX-^~@NGCb=EmZf0fujFo=2!-1sLs(=4KH02gi6Q z*^IvhFtTf=LY$E|M=w=Q-Y7#`IN&)E6Pp>AN|TmKZBV9pVm~zB5xt<=&{9Nz9ygkG z$^jW+Q&~;Orq{CILzNH6vU$nQeFL|1&$t3*+S-|ywt?G0P%-Tv9y}8ljXz^s1g`G> z!Lw&U#C4K*Qu`}@XL&<@wj%)reIJ7S&_GMA!j)dYXU4Nu{Xd+w3H|DD-!LtFeayd;FZ zZRLdQjK}1D)F7s&pJ?`L=l+VemR2*_1Cw%2}*G_h0UWqBK49%2NS|IIA zs46@O)cPsT>`1`$%?)60HET+kHhaqztj;-S7u$rDT!WUBmNjpBp9-^DOwvN5+H>GS zkf%q_lQkhWHTmNQ?L;&3Z_&>JH2S&|9={pxsA5yd@kAC9Q4d? zkQ9j2+?@Aai+HRPGNYBUs9Lqp8++f9r+t)z>%O%`j$2mn*^;!PjImj0aNWcT(G;xJ zYSfB~7t2vA%1p7MlUy$|`)rH0EtR#9pBSuSMIq|;Q$t;R#|X;vOeVQ>Ucy$QK<|IUX&u~aRBG9hH=ByGHYx1(1l; zzlKXkcunVwNH*t6OF+DxVua5K*Q8;rRH=->8lYWD)Ql)NRlI;N3aXeQcUe9sl_+TC zKys$G9TtPW)HccU{N9FLb$E7UyGNeiZ8BaZAczekz>`a6mR2(DhSeE?@M6Il(sos4 zu03{wK;$(iMN@SK=Viv{on)CgDTT1g{E>l}0l2J{{G4i*xpf*P!$0h*>KKOww8ZR} zLztTufPsZW--P#YO-!?)1|XT(QK6k@=J381CpP-Ci>xAUc8*Sr;txka4r0N?5qTgW zX(x7)%wd~|A?&kg`vc#tVbfZUNIMLfT=1%bW26PK>Nvv;AXbitl#@fD6rWbisTx30 zu(M6hcYU|1p%r^QX7ZdHp0y}M*XWfo+moMvih~oLE9^D1z4~KgpYP-20g4BFJRYD; zlqCn((j5{8sJ-M$c3_kw)2^JGTQaycH=LgAnk+J6#M3ROqbgY8D{$j-6vy zpzJA)m4`{0W;c4ej>{X@Zi5;co%G{g{UH!Qgr6uOiRWx!!Zfzk1BS6>k$|= z;Qg2q)j2yg)J1f9LiTES!gdhR?!vz+7(ZunLhdwO<Ci^nxw#R249iPKPgzWK}H*Qw42VNt8ftz_bNo-Uy9iSt|kC zPnQVHjClZ8E?8CPYJpg?Waq3BEpO(hXlEO3f&WUT7cA3lmCd@Q0E_%}Nb*XgYj)t& zFt={uZVadq+OW(>$VWfp<5O!K03f=pkP~o}YJmK>y#Xr=u+M0C30j=3E%L{u)3t5; z4_-ifvol~#DG6`L+S3UnoX^7clLb9zgc3Nl&^J-tY{uUrp`S7WdhaqP$BfxSmiu!= z=v16rie^|tAo<&bmL(B-!K8)76r5RFqKYJWvu*lNhD9a2Z z3tfC5p}w812AZ5~jZ?ZgzTBCOe5(ma8sV$c9oUQsxy!pxpE8gl&+uFCx$QM!wO(tKFoMgS1M4AIZayaQK{gjaV@OX0HG|VG`C0AWt zQ@JGX-;<1dZ{DK*H}|CN{rm4zP*xd(!2DebONE2%58zqkC%8I{$cu30%daJE7nA$s z-_1v86VXDNEqMR_astTh)JR9CU3)=gsZON12{9!7?Z!G8GO@h`H7BwR4jPyhnn;0eZ*NJ!S}ht_9xKz@ zf!JS%Lh1>5Jbt|6p?@QkR;2Efw*0_3FAY_hkptTuS8gkF`w{%JFdte43wDyFx`9&E zlsDik=sG*3dZCMp%cs-a;4EnfbMGpKT8gSxanXkjJ%%DcT z`wu&N2GYs0W#n$jG?O)Nm?8^t;THzFa$ioFWlYO^uDjbkgj1$9lbIPr20feOXmAid z(#w{)W9ViwAqR#Od4J_&t1|Qpbn^1J$62l@W)9*5Zsu4>rv3S;Y17fFT6!G<$I}=b zGor21Rk~5AZ^L^MZ+B)b@0qULjNI|_KYM4-5?y!r1{HY8w6O1>5Hi0eH&FEiaNbLU zHvWVFD-E1gO~B?S)&@j2Fsg7eK_d7*OS}Evfub$=l7hSl_PnO_*dM#`I?=5yVh0p} zJDb22L-FA7W2djX0loN)_CFEYw@4h$vQ;HGPb;7ZMhcpt37~KJSi7SiOB-~hjw3n{ z9fo7pQt+U)=y~|s*( z!a%=ydnHQf8%kSu6XUJfyeZ`igeTZShG}09HJYDRTID5%v4h^qvHl8VB z5aWVdo;Hf>LWe%rA^77u3&u^|9Xe%LrH+?uWWlJ>7PH!djJFnm%o~VlK+C#e{qPQC7ZB{% zl&#>6PRNskae^QY!R=w<{9hszXD`UIO*v)2;!oXGy8#bMl*N`FrpHJS12XF>#q=O6 z+QS6bu#;;g*=w;tj2Ul$5k3|rtl)y5i3}nn{UK=Kq3`#lpykw_PHP-8I0AGx>H~Y; zd>I|}f2qTNFay*4w&f;>m!MvutN5yqMtZDmvx)D$kkqWHHCTZLyAhfwrnmdZ+Bv|g z^c%AwX3G*aNw9!fdoPdW@xB6_Tf z1v5DKo0F46`y*znJ)neZg6s9Yt`s7g?-7MqbvB>bSY)m=7o zc6UO)TOccDZXP^`LG9*4?DI8|oH) z_wwJ}@z4;vJ8$;Cot~QSPEY?H>2|MOX}hX!ssGVyD%Y&$%2aEn>1kk7Pg_x*n#F=O z_HjI)v z$TLw)>Id^Nh-3!8I#%Cz%;`R*2@@F!G{NW(uzV2#3IL7h*!2 zGVxCYPq<+m`S06!w6S+$l&&xv#7I%Gvnc`8YY1^A@;h_x7 z*DCY4@;W=@P$R{vYx0qk_fAYJ7AVh^8BryHz#FBFq?5alXP}{X66?_&SR&=ef1}k& z7RGs}*aPoZ<~ue$d3lWMV~w!NYfTMVtC?mJ-F^*|d;AL#?|42JY-;HWAs1|#AkTOy zBNk+8R;yx#Mb0&oa|W2gyBw#RU{F@FUUUWSF~BoK{+%;ckmr^^wnv{~ekOAPR=-a6SHQoIUyb@9x&>QeD=Ui+kj5 z&8vzlR*0rl#Qj_Irqf_K@1(kyrz!-E;^Tyv0fZgEln-tbfT03|l3BNfxFE_lNL&l1 z%T>nGv4!f^RZzj`rbc#nd7TJM$|bUJSCpKKs;k-4it_p-atgNkkRa@n=<~>RWp4H6 z5&D7f=2xNwE&t{bqvdy!YxZqZu+6{6#MY`tbj$U4|Eq({Rk&|>yiPs6U5jD(AiDC?_%bi6EA;A+8lQgWh<+EOg%Ifgtx#1b4 zs0la*gXHq;^)cYIoM7w#i7Z+@%f%a6O_F({al{(wdq%W5SHSgyu6;q9va&Kj7;&fA ztgE(zYB+Z4hVXc+`R9sAb|E<^r~n{_$>0p^zHNIko)!k}B+$4bN}JUNYl)k~wA0>8 z)Y^BM^5+0IgHTfP8N~hSWWuR>+hAZ&hZ}lx)=gQVD;#}#>4UrGB=XHUm^r!(nhfAf z3)B-?M^+e1wKNNWYwT2C%Ezb71*kSKqJ_zskTol}342?xR@;;%71PXtPBlx^ppm{7 z!xArKI9{8Zg+?GzVzlPSqMJ@?fXda$A4Ju+w{9*}vJFrB?I1vcI9m)ZY{*W8Af znj=-QR88;!V=F}6b`V}|I~t|f+o$dE7;P1S)T{<=+Qaeq6^~4=C83Sx8Jz)cUy_10 z=2RJii3ieU>A~CDRpBKK|F zZTV3H8tQWs5wA@UV-rxs+u_2$8qs@!4%!ZF2llG3q}^{c-?tz2wW2A+;8t!h0A4RG zT2YDl@=t6Tntg0)Hl$jO#!R$`+Gq>*_l8qMBnvJh3N%ob!Q=DIX9glaU=F=aKf zkZ8;&yD+E}?3yW-EF#OVPCx7-;pAV{rm)a~1wT%!JPiKB=9TBGJkn0_*V?r#-ZcbzqN1Wk6a zP4Z)M{$>8aT5Q27K+cokp)Bic5t6UWS)PnWJG)=z<9wX&Oo9WkZE9L%)}{BWF|-;_ z5)amldFkhPxa#~$u9z)2cWF_GYC=w)9!8`)X36d2$h#L64xVEcoo+i# zj;+(mG1HN*1&3|Fi0ptdyuZNPSE6h5hXcjW5)0!&!}SdhCQq8KJ)9*-gpd~tSwpXm zzuPidbL2#}Ny#PAlCgVc8qP52mdknGXo?B`lKL{FHV0;jCt0hVUJ|c)Igs=P~))&fm%1wwqSGxEH+hb9ips1gZw|X+?Cl1MhmNPpAF8nzap=A!|Sdl z4TiUfnO7p4Z9^3dB@MfXVuy_A8a!eRPq>5uiB3B!8rLdfj0#EB!ps!H$TXJYL0uTg zvx=8YvNBwT)TLld?wT$m0eIyDLKRU$H0EEfQFTYlrPY1cyg4#Ik8x@fGPa&*&);fE zt?NXQ#4LgS74xo(PN52)H)gBA*FBC|C3hiDpiW$LJ%j~S3s#aTRlERdZI-b#B%4<1 z-UdN<$5GJh))wKB|1-FIc%5w*sbpOs$CcU9%roz~WeISn7g%2m3ENDF$rrShJ70YJ z;_C;0T~6CCinEvF7vDVFKNElbuY>BFCwZ|{Cu9GGLGGeqtWwN=`Rvty|8@7jAO85o zqvPqH4`$2m<)6#^Z7oKJ<9fHir1Wn<-CFkY<4aKw83%05h`3TjWC*YiT%)MI0%TFe z$CH(WeT1w@OdqfVCjWazHFcUkml)kYBHoDytW9RO=B|cS$cMk6hKjMqrv!HHg|oqK z(tI_^P+UrUKM?oe6OO}`-b#mIGaaQ62o{L0J|J#VZl!?_2tVfK1YxSQc5y*+)D?Jx&+&h<9jR97ma1t3E#H0VW3 zUpT?w&@zgt9vId@{P{Ol+ZYz_)lHIi^pruUc)pYkej`nS- zLFc1u5=qPl_u-tKJE?VkIs((l=D-pl$)4`j6t*f3YgM z9eX~mJhlVKHUtpcKZeh7-Bp@fhApJaOY=q!TxI`Q7v;6h?CFc(gMjjezk%#tNv`ZN zqBU2nphuam_49#7Ts`YIi-ULw>3A7?b4Lqp!>gihh$#~SB&Epc8 zQFKr~7h5lP_x7@vyN@5);o%&jN&wctIl!2$K`_0uyB@>5fLtvgxItVZ6zAa08G*1h zYee@c`$6Eao68$_aPsI3ptu4UKylHq60*Vsje(iMapbpaBn|L*ktdQC?4W$cOjj#- z3y!&;)*Ew?|C6#1g<;-ngaBj}@jW~_<=}GXqJi;TM>?liqgXJhRpw8>6)ivwbch6v z>B2MkN>wA<#CyuGgJC4UZ<}fvFcNwoBzxK$jdOrZ_7f~Ua(+-+r>`W-bfoW@uiR=y z?%E1nF3qTJt9!kmrpXAj^tq#cLe59Pj&h}~dCKoDZ|0+|2!2vyCEDqgiN#10rs!lq za9f%Xr{pxxKt|mM;m{WRh;!Rs7i%eN1E(SAt1Rb1H!ELOIi4H;mb+Oql zw)*MOGbnRou`k%@V{$5D1U#4ye0^{$ezUR48(3h#hYrLp+h|XflUIDc08TQvFWDe^ zCUYr-KJ6p~Yb&O`MBy1g-tdT}-5go4j**YV_eorq%=@zXd_@V*io^~#4h(X(K8zOk z9N?%*l3uXhk`GG-w-B{%RonfbbsN-ecGB_PQBW~9FQF765Mb3F+3PjS%vM!y@rObeO+0cygfQ#wq-Fkb;$Q0oqFLG zb1eKIrgqB;x9WDKV*h{v-vHnM-6s>XFLqnpOD|u=EA3SPzwvl|FZ4W$!O9TERUN{r>Ja-`Tqy=ew8V z{DJwO`SH;F&;0S|a-4s8InEznj`Js%JNfS3?^}0I$UPb5;sG{QG4I~>Gj6A??ek>!Q9N)2 zm}cAQkK6Iwqk`gwqlL~+<&H{|TU+b9JsUR#-AXZaroSrzW5b(*b*?y91NLq!&K_oD zICrw9te{ZC&D*Xma0oo06&kxSYZ-j#uSJ65oJutE)*~<6psX!_C*OIzy*l{O`3_Xb z+aVITPmn)XS|$A)rqa?XsLkIf&*B#U)it~es5de0C)(Mkhi|;x>N%IS6xXo;SFtvC zJn++^?N09&Gj*yLQfOVV(sMUjXj)xXf|jTBoJl%or#oYHiI}q2s#8p+kM7;M$=pVS zRu^=s$WKfPtaAe3Z*Rggb$XYJ)1s3`=)dFwiedGpAJs)b6IC%){pkjvX!B!qu@x2A2&%2Ts1m+FGHH`~-!3d4in z-tg|40iC*9973u~@E|?~_ViLO?EcWV{qaUV&@C%G&IGDzh+jq95Tlj>xa`(uVTO?3 z?~f3wW%-f8U>XtJVh0Am%Wd=ihW+Qi`~98ustTOSHu}uoOf?a0%in1B)9K%TcklN% zRz>(BUNM>v9)_*PeyWT1v{MFe;pKDByE1(qA0C4b`zY_;hfU|VNyCuES*2iCYQ8=n zr%!jB{`o}ctu2SgPN7~4S3ZCYat1*n0q0Y1Bj6xl1)Sy*&S`*W%2xE54%H1QVErg! zM4bq|aijHT=vS-D{ii)8h*&;v@Nag5otXD|i*LBazb(e$>IA!=S%%Ln!>45#DAfr54U;-@U7I^4XT*1^H~%YKV+&IT%+Hr z@n+51#D<(e3jmEOTh1GO63Ja$g=&^z^eJY0E?LDe?{*rtJu*LqX(KG~y$DWqsGv2P$AUmfOFL9Vj4FYggn{V zd$2;E{KFyoboN+fkf{YQaM`HezT?1W?DZLYea2ot4|`b*HHf_|%5oA?AA9xuV{Ncu zqiU*tbaF0Yvz_sH@8L!)wjTDLtFvXzZ@R?Z5?%sEUz|U ze?IX)V`*=!c`K#2Prv0x-$7zP_3tp!hPxI=Ql$^+*>^`s= z@M7-7KfFeX25%Oo@Uw$G3i%IlXfhODSKYjjpHsogr6PF9$!t*u_{opKMa3bVqmB25+4>Rkw> z-OGYP*-wmbjw97=4Yd9s?E~t+XHtI@1bE<}oU!G{1IfYq~#2Wbyq`LeVRB2Hhn!=n}$42H;wt-JpPoJx6Tq# z`!Gs?iZ>+2z=J8=ZU+sMkhF9a6~|rL3}qkEqsC9xcGydOmh}2FNkG)gDj6^*?N5xg zK6RWFwH-_enIN};7D!&A;@U9onc^jj4|CMRLNr3Uv)tRTTfpQ07_1Y`cRe;=gMmIZ z4!Q{z`Z-wrAHKpvxc%dK{xw|xI==rp&VN1czn1$q%+fHAX}O+IumFmJvbToQWfIwN ze^hLtB4`7M-~931w!JCRkM;_x$@;!x)W5FLRRo|FWs(C6$RMD|I|+?I=V|cEoSO+%9~lOPiwA<%V|5i#AFe>|NkXkteLtj*|fud&sz=u z=(?S$%UP#bp{vV9H)pz<&eSDW;>n{&pgusc0HqjuuTGnpI=u_!tuJu~ zTr_Zn8fC7_z0>@6A4H2n4CrUR;Mc+ztgFz2;u99=!2)zC*&H}EO1*yNYu>sG~E4U>p+RP#Ke0w$@6>`~XsG~F5YR~3a5tueM0$5k-6>t9H(xlrz zPF^1GxPXqh`uhc&E`&I*={ad7 z7Tog%@65u`bHPhj`*g-7yD)qlurPVh12(ksy39RS=xx8WbtnC>-1?fs5!HVHekfG= z$67(W8LDtW#`%M>Q{}pH>fpnKCG~kz2q_JF0Ci<+sTDA*zqNZmywwFtCL6<{* zP^1+aE5=nz2i^q)htyjrf!czZwzL(@`8%AlJulvnQd#M@`-qb-?- z8;JJf1tT?m3snQX4er4hcOd=B?7@0%@IE{G_eB0Rk^<6ucv}B6h6_RjgM+6@? zs2!s2;i+I!;}Sw0WWy?D9&}FrOLTB>F;zatBBhw?8jTv_qH$fLx|%K+g~~E!hfT*z z(UA+T7HPfGfl5eQSn^jCWp4gyrT760_=~d%Ih5>p*%a3`%&>w-*4jh+jSy$YT~RPr z+PY}4!dKNb!fM6#2T&%iv|LWe*<+Q@3z>5fy=;XtT=H__Ds5#@cMK$s%bqEMyy8mV%Qr}z*tzaB z7BK`xkK*SH?_kNAWf(_Jj`1pc3P>Bm>Q*m_nEt>DOFwOvXvb>>qV0HbugQx^p4E!I z4%yHn20hrWLYe(uvh;Mt3=RL7Rl93u94`^n!ipEcVM(Y@RvEdYNj9o7r@E)`bV4X8 zI;BM&XqM}OMpDuN2oMG9b(uCo5qhOb=yNR;y`YT%u6cUspM< z3F^w3L)mt$M(b8N9<@Dn-`UF7n7!Sxo9?>=7WB5D=gxU8hL(kTMp^QFoF_kBMZU?C z@so$X@DT#M7e@3;4=4BMCRgW0Zu`lwvMG$!2V0~YF(I37P!K8s2*c*{vW$}BM6KHe z&<49Fuj7W{BqmJhYOP%02e8;7Eeg>!I#kb((0iv?zVQj@Z+LE1wwdj9)N{Pu$H#*P zU=qrFr|~wyC~>%21T4yZzv|&T#PC(AHQjE_!C}-fxDG?D!d56|WGJXSX}C07#<{7M zD7V?tU%X(sUbY}9-gzxbWvM(+VFi z5R8={G>#NPU*@x5lwpYpC5L^96?7G%RCsT2NruH*SHphB8%AD=Ie7tExDCh6S7JV^ zwWp!?%+dZqiN?H`qYiD${EeSYYS77o`*uBQG3;mqx~%;G5t+ zikj+VX@DeKsmSoWhC&)D0vaYfq)FXHYXMaQNbYA@6&9=-{_N=a{0S}K{ep_>6fzN7ecGEI0!{jYYcU4y`2vubNyJPbFPsjIA zX<&uir>_q}i-K0X5cjsBpSWa{6jjz%v|+xd=@Q@-Kxsjn*fkhO1kep3yJL8jrw7lD z(8$%dRAK2U^R;D1-Ks8x(pLUSWgAQJkmE5dmBO2Eh$fXGkg+6qAaB4PM_dlDf*2dX zMdL-76(y||yn{y8Z-gzrQZiyl+aU3}ibGGdFe3nw(WcCT^4AZluMf7m7Pg#_%`>*# zbY-TU#g=S7|FJVNC_X>8b==`!_mItItT3qXwQvEKn<>*`kBrk#TWg=?f`%(KfBgI@ z^a&EDSyDgs747&IEcw2B99?$2C(k+~?As~vW_~blgn#_}Eh{>>{QkRi%TJiBdvzPZ z`275BYj|+jf#@x9+mKF_?Xryil=bR0l4Oexn%*neogQ=pAA#+xdA_>==~a4#l(&#m z0kI$gnUS4*H-C^n+;BQuDvJe6S~O~BK=qN^gcMQ3dYPAv$`MAcy4j4swXac2lY+%y zzfw2>E6jO9Hh0~r^o8upMvXVtsPtz}m;Y#Q?*Yyw*6{b9uB!JV)jqcMnh4Z%WLDo) zB#Ame7r&}Hy#=EN9DLv8cxVYgYkVmAIj`89Jy!*-tSUTcwvA?)&csy;^b4om3k<6TsCB;$YVdqM(hVNx2~j z-a1vZ9m*C!Gf~asQXQ8^fmD0lfg>o^@{eoC%4jf-l}5>qm{$APD7slOl{ddrn!VbS zk$SH0i8mkG6FltNl4=$!7{P>O^`(kjEEr@Fl+4g<)|9NY-`G-+ZCi0xV$?1*v=xfl zYbqglt0}L7;QNaqm4IkrauuI3bSpd*Wlj!-QXI}3U^@6}^V`{MbDL})G+c99nLm#h z3XYrG(Ep}6SewpFi9Np(C7TfQV$~PP%b;K>ceg1rn+KEmj~!h)dwFatzoDFo`WrBo zkMl=6Iil#;Qohzo-XArN&xKH@_l>ET3mcO3wxZVdhWwE#b^vpZ-bIsGHv+dfw=tBX zm4&zLMy#)1S%_Foe}nGh=2xyo+;IIshSuW~j%eMIMCTa^MJmJ7lUl zj8V(4*i=OZ%uE~TtP!-C+8!Tgkl?Bi=S(h%Xy8m0RK{EvST78BQ`0l%&fcFp^MUng zgVx_?8H8ATRW?e=^WUA$Wn1K@x@hw+-d(L%)Ri~_jQHQcRR9R5@*45mb`c$Vl%H>OEaU_$@AR= zK}4Z!R!x0uZ&V0z+9IzRD^+^HtuvGJ%chE4FvtOww7M#ukgUrr;nD!YX5){T&GErL zO$H-I>oP*OL_ z-K!)^=K6lOw#c_LdvOK~N`;V2sE>(E(UpoWTQnDkTc(UkCQrl}YakQir?V^!n-m=Q zkB8e=s>t9MZk?q{o~Cpf0?K2brTzhbZu|aNd{2I+*TFwK zj{WDObBVje4bb<;V(4o;kUq8JQJ6-rqX^$uTxr%|LM4)B1$;7oGWK9jM2ePO_$Guc zKMnQv9sNqm*TjJS*_=&ocosgugKOA_D_)`%-=`1ve)>&0K7ACc+Vgn>aRXJQ97C9n z{dF65L?b=VV|-&DJL5r=bIL|#Z21fHc>Fk+QsN5%FFZ>s8bgvKs;6mHg;fHzWntg5 zl59#w%jG6v=d5v&Okkqa3sx&uoilIwyy^9jY{n#O3KqT0Xv^JY$-I`tKRMqSZP~Ru zZkeS;-L&Fr@mlC3GsJy&vy=2%3awh+o_3XECVH&eWanU`XDNd~F-L=QM2NA5WNpQ5 z_V0j451Bl|7dIyCH^HGT=&J$lKLnqCBx(w)@j*yxXBbIY&D+5tk$_A-u;**A*KZX~ zB^3Z#QIe7?*`e3@v@7RK4{E(`sIQV;lYybcro)T$SLJlH6-oqTG;2i}`o^xK_>fdy z;)?LP?ldTtL{nJra%aNfRpspCh@YPQ(aMz=&sN%BsIjrZy#w-6m{zVsA}=k;hZ~2 z5sXY3<=6egS7ayOc?>b4HXDXZfQiv77*ZLP9X{t2Ud=#dYa4iPPTR{dV{1;zv=Z~t z?s#`R8b2J3cSpQ#r8ox%CY5Oc(dDjJ+VYGySwtbsSd%kknnQeLCT1CJ+^2RJ{n1Sb z#D;F%l(luJBa(Q2Io2%h?Hi%A!bAa>!t|V%2-lq!uH1&FxsuI?z1$I2Hl0(=F6c71 z-VcSS!{n%5s8~^A7ZUwr5)xxtCN6O!59Py-nt^m;7U!Y4sJO1ZY2M5|%+Vb465_Y&n zq*l{{fR>+}Q^`fAAZ*@@n>NUP*l{70yC8AsMEB+)ET~$rl1!=M1+c8^@G1I zr|lQT*~{^ZZ=UU+iNF5WLG{g(yjZG}vHwDenu&(7N-_K8vseH9*WLeq_~RFkj;DV< zm@T`Pe=hU4wHO_a>)j$Z>&-u7{7;7QgX~gr$qMbU9tNBSiOdRgB?@>pGlh!8x~-IQ zByyKQ<#0>A`u5d_qxG%T%NaDh{filBz|HVG$%tqWA-fY&`>YtD8-vbr;ByZp^Nw+! z$-*s>g-8axCDO1;93ra$;>XGph!qkMya0SagTG0mlV~xwV=k@{xf{Q!ppyXnT+K5e&2qGQw{(biD9r?lnc-?_z{{8!W?RPe){Qdg`pKcKg&wDKnj4GT;2*v(B zOS}Evfue1TPK2(YUQ>ERjNQaxKz2X@c$|)K%}_izADO-RnR)+ZvGj2$SLhs>odvgF zho*s zw?Dg(>nKOhHUNIUlP5GcHmpN#`&jvL;3(6S=?jLA?+Rij&u#waNH-HlV?7wFPg_~Z zrXI`2`NM~h)VCMMQq1Q0Tx`AEc|6Wu?mT`F?|!9htMG9MJRL>^|F#${km0T=d|ijI!yCB`R9WJe+fqHmtY&M>6r_LUh&KE z#%@vx(N1Y`woQ~k35sh{3Y&;+%A1nVIpvMg&S`-h9414mLZAJbT#qqFDmk;OA* zlssej97f2@v6j(^s;Fj4kACc!G}6DhQKKz`9W$7M5uQ@Rb29z@;(W)ZCohi?kyw4G z^1_dySv7-LeRJf@njHT^2;zcGQ%>iCO%p`-{4Jy|kqT%v%0`yhp(l)FM0O2q2nGY0 zWeBN?wKFrrwPKA=Imj$vVkr-qF{+IeVcnaNlAc>ouC$ z4D7LyT2*px94+*0dURYN1cmFst3#Ax^xeKqFDGW?Cng0El2lgl(clw%7ICW`iS_!w zn!Y{eKQRd3j1r3CMS6kDp-6n0f}d?HO1J}WSI}LFk2viP)TskCiq5thQNpRY^>z$I zz<3ZUC1%k`Q=#VL1JdHCMQn#rQ@i=YalU6CrEzCB&e!l^66nn`HU#;9C2Iq4mA%9b zRy917yTQI%N#9_fugl=zPI;6w+=d$8F^8!Ym6$JyY7HX?lu1iik72xd)q-3Id1jD+ z5zg`dG6z3H_*n$Mw>a4D7@9o|t&;O*?#vmxa9$x>(T9IBi|Bsj=_r2^OPZ` zRC6`s=uPrWycXK6nQsWf$?;0HP=flnq?{2RIs!#R)1X??4D-;HRc^?dXO3oYE&QQ>bM!Jq2t++O}oaKHc z;tx&rbR#l#WwNKltE`{!DKa;p(gP$Ra|ZlF>(^k8hDTEd1@?q8Ou@ZvXQmbuR|l#) z0lR8ZYV?VjbR_05-=|rK ziY0fvI=79zPi*9Y^(nX3S-8G#3W`jr0&MP*0omKPU{xI@_}%uGKNM4q9?vgJxON0M5tpP3r|A$R;DAGsSu49CgaeC(Xs_b}H((TFb zPIy|I3U6&9ym(w!zs)cxcI)HUGFe0^Dz-^%(cRvXUB5c3lB0n)>CNY7-_q1f{j0sN zY4+m5YdSoW>n?1Hrho2*?LoVKc-LKBwKBkU*VLUeC2BO7x-+(>aP1%bfPSSmQC= z;AY?`KKxQ7-Q4PZFg^WhuYwue)wjUcfCnD~sEH9WKt=jVD3mLj3E3H!!P(3jKo$Q9 zG?G_+iMGZ_$L7jTiP|yiPN|8yVl0hXiMjRZIc{j%riA{2R!_s{y%T(u!m^bDOqoXN zNF8J%Q-f7jB@1fqdAXvH_4Z$@$5mhprl^jQRtE}+4#5hXdSbe}onHYC3M64Z+vyU4 zg5tBHv&sOfVH(wFa zXmOjPC9ee(B&M3EfkgZ5K0QxXh|zl35@0sxX8=^omtUO&PKsOitk3dYxn)>sm-=?diuRX z^EJ~n1B95e*sx6TNqQ;f1Z%$bJm{w^%2rBvlJp|f@Zrr&B(Siw_Xh%7Eh$8za1m#Z zKzl!vnD{|$6N9=Xhb4+E0{Ggm;v23pV@;dV z94S=X-chi|P?nm!LTA;P7*ugaIS#DNPA?s$F!LEf@RGT!LaI?|7IvigJfpH$aLo$c zNoFWWR*2>tv9ba`J=?!W>-M*+%>yO+qb#d{1X?LtI;T2B&O|&<8!4DQQ)Zz?cFw9t ziu?9!_x$X!%GTMo4@F66qj~1*LKL*|#p2-tT4RkZ<=$4bNOj8*+KzSZqGXAZJaNP^ zOvg-blA6&b${HW~vf(rLTgaYsAG3*Q-+<@~;mv_icS|@$z3&|mO(V#>qmnk7K`sIp zc$y5&4#`}~D~7}sx$nwSeAIx3`rJ(Gxwb3Y;hg;%(R+dMtIj|du66EC%zmSJKM{~4 z?J1}bd24t=M`^rcMv^T%{xEglvjOln>j=?eJB~%zb|wB@35qGxbgiSu*3cwQVqcN; zOBZSvd^SF;=!s97Om1e3ym{G^;4SgF^vN})PvYx=MEVq*npDe*E2D&eDeD#v%8bdI zxbV>tqh;d!(#Z-3G8v7q$js1B zEgblzT)T2@rxxp04j>FK9lRP`yU=YaPK};fJp8q!Gulv6Qni>0;Aw$!n0sTWU#j9r zSxW1E*`MVz52`N!U0JFul0VXNWu#Ytj3gz;9)_YKX<>+CboB(2GR%TW1%Bb0#7xX> zorvJYp+?T9woc6jVSurQ;|<6chkmqwfvCQx73FpO^_GkGgEuF(bYp~zR0yO&{A2rz zV!!7;)s%09zPqnP2_CeY=I+6!e%lmm^Y3xXUdaQG=T^6hB>hjw-uP=CjdMudfQz8( zcBbq!dvk|M@y~ed?^v^vclCt4!ooWCMU=YH#z#8tO?0~LwBfTMu>l%14ELkh6Ho zx1_(eaK%pXX-@WgYY1L0e#~~2P*G&AHvw-^)rtn|1G!x9s*{lBh%3V(@G_4S6{w>E zM^hI{P}60|Fl{(vr8orrE?w7Jkf~(!jCAc>(vqp3$2vKH&S-hgz36(**+nY5V5I}h zatKilFiyvF^QI7WOEr)3;jS(QnG23eKpari0s3me+TbYj>&~_1qg~=18XTM?{%{3p zOQJM{hb2e=8G)fg@56JatP&R}I?OoK^96Yx>OX9U+&p^0mf@g6^nZT8Ryx1G?W0Fy zrM*oPxBKABCs;JnTu{PvQHGe|koX7o#`&HJsHzobVTi|+u+hV-mhccii0LW1A49DQ zGlC!thd5MK+9TfMlhK|Z(%bc1l7nEaD`g?X01A3K1E*uM)}_ykC@U(?8l4qPYWsl3 zP?*#f&Idw)2N9$*wsZsf7)aR}TSl@8Z2RiEg`j3=P}4RVfeqqajRb}$V1#%#|J}U^ z8WPddDnt=`J^*b1s_8fj2@8J*Bc(3_W*3{;6KJH|h5$(Xe|13kowWrLdb9sZ|oJ>jH)i z%9gBUnq$~4dM$55ei=jLE@-2jiX|ZTNV{(N1cOac$7&TS27n z-Y_YIwJR`U=H-ysT6B8pCLW{HP4K)nR9R}5Mi|y6?JvTH@7_r)8)P~qldnjQ_R@S_ zw6MVHeK<>)Q0oT_gR+0^Y{m?;`C>vg-@OBP@82gcZ4T(2@i^|EHD%nz+Jj2+Jl{xk zWPzI;WFe7BbOH1(ZU(F3^JZR!Y%jcGezVZh&6PU`exIMeZP6|o)l-a8#sK*>RMn&7 zE%FrWH>X*yhd1;p+G&$VI$_H!$8bg)jOp>e&e$?!&WMt@2YWw~mst62nRXjp6Q$O2 zTy|6h8)u#;+Qkmc2(D9bcgCeRH{+aBqFUZG^bBiOIkoCJ2K-n~BdqE+fna7fU*`Th z!!+CWW&!TN3f$?f-&J!=a}9*x{EA8a3d5{=A`IM4u&wnNHZe=1vwjd$@7n-rg<^@p zb$L_4;S&lB{~nLhUada_MmL&y{|*It=TnJXK?6M0u}b>+R6>jE^Lp9kQwlAv*PF;L z>(}BVM3>%W7&zGpJ6?!Jb=4q!$ZVd2iEWgZ>^wK;ZSr_8M&rXVftZ=LV2w5qN_L*` zIP=peqs*P{J25m{rlhX{w;mXAb-R9H(E;j^T+xrC5!*(%GbF+>0|?Gbx(inOA`R6t zSjYPgPX7QhGqC&DpN|2OGeBG14@^k5nzf>bTy46g_4=XsY?}{yIgo;GX#a}0Yfx6C zl=x_6(G9y@RUi#%j@*E*S0H^tLIBI!7Y1UKJhbk&gOk@FQ8QBObkfr0{Ao~U9+#gmZEE+bo4lW{8}_eLg=Vguzm4H8O~xSG@m6P+`JAY z7qF&~V%Sza4Q%Y8D0^F1X1*;pK+ALfcrlWU52;t+M-61F?eAa0f6 zazf@s8$b6srP6%kJ{0;gd5lUn)Dqg$WR)js^u^)PxBvP4>B;HAGq3G6WE}r?g03U( zn?1M$bQcz;nEn81nervAtI!ht@T^%GF&5_B7@bq;`@~jR01(G=Bf{|<8*hHFi5Mfo z;qg+Gy|8AM0HCG8w8q@(QOP)tX)@j}(aZBN@v`#=#-~0UED_eVCG`%xPz?ug9kwl2 zD~W}%MkF_S=!r0D)r1*t2GBe`#SBX>qtXbP>|&eb$K?FW{6QWhB`Q<#D$BZ7X~}5) zm36Av+5Ivf=i_{5@?`wvLDJN;$gHOPt1+}1Pm&UQ8EDD;IgQKp5tQ_Bj)$w&`N$Qs zg{z=NA*u;Ed3qRe8?nzr(1>zjE%?UnZ+n15GC;y>V{QLkTnq z%jdaG(nGX3V+}&XnbP&M=nH_~qUSODMl?cNcUvexg~^R%$DDIAgL8t6O5_5)FdtgW z3Z#5aAVH2$Lu1m2MnCB!p38Q)jhtlYHtxbSf*IgU#p>{{oZ$(tnbNdwV?C;OfM?B2 z$bw;qF43ZG&e6V_TCN8M5qjtk1icSeqG49n8?4G48k3dQA^)If%0rAIFal{jaZfbb zh9+Q^hHgYtEq(A%RMXR7XB2|DBt<7BYjm6-BF=OgZ3ka7#noh)u+XJ%30vpZUwJwd zeS*1)l63u)`!o5>a=onF2BiHx zTb;S#9KQ$WV&}!#Ub|YUTjDUxXhrSz`XaNKVA7+d?H=yhwjpChdHMyzb3VMztEqTi3gB+NwoL`P=Mw{(b^Y^88*+q7gG$WjEKyVe zm2j~}KEmoka;W<0BUM2%N7I+{)GRHlYKXGdv{-l^Bq#e7#NTLs&Z;G9(tIBlj9qX_ zlrD{A<=?BW2wt{|j7oMsvTd}0NJ5+uMA*pM7Y5K#a7RS#%?HSN2DS^%LJ0EWjkC-J zMj}?ckw1JzcJrM_`54O!)P|^(OjBN|Z7_TH3p0p9k-Jx@Gp*+-gpOsEn2*rD|6{bZ z>#+SXSlwUpnrokn3286-?HV2^1m+>7Eqx~aq~wj^rCNi2abY4BrCE}wA2$TEWi4At z-yq}&uCc%DPEqN(Tc?GZE-`nrRZJpQh63Huq_hB!6c`Szyjn7v6V7F1^B{IjX*H2p z47kK~hz~iRB|X52zi@T9BNAq47d334MU{C%d?FC*Hs=IAT9VD7E87F~ab=5aT;||r z#Bde!8*)3F5qIV`11R{q4RH~rH`|FAyxWQGYqw(C;6~Q!NK&?OocIw}kS%%JTxLXn z1+`|+Ml=~@Qcl4`i4?&Xe#ZOlApJ?3--|`Zcbc>&5mSBC_;^UpCPyk>IF(!mB6L}@emSOM)ZTXI5_=;^+# zs<~?mQ5*Iv(K*w>f%m8PiZ{KC_pWM%*?gN-+ALmF1`P^t`C4*l8*@r=oAr(BShrG0 zsunIr2`Gu{9>YWxFPR|`o()Uo;W4>ux{TsVS3Ur1voLF~oEx_p);(N`nm0%0=P^!g zLVRxgBOBQ0Q@HcSn(oTj?aNkrSLCiM9kKu2F?s%{<9oJ18^&}#eSHvG6tv=nxM$gB zGG&-j#+IYZ+KM*J_cdJt!~!jKA%C;YDc_1x-602u-CFV)L}gqPa8V zkna|(fsS9>UPDx`)k(pg8eXz&6joI;fS%%Vzu;2o@3>xkgCL+(v|;iKT2(gEH-a7= z?I^g;h_o++v>=bbj~*1@;73YZ4#qPzA%7#Ao8<2s-X}APnc8wD4RHM*IYlw%&S!Fp zU(cD|+$Nhw3O4^J z{ym~Nf5`s56;l5pvf~?~01de6mm_d0V@K~->fmje9#^$TVfD16jheYM11qke2;PdD z$oQtar$=l}PaHRc}P$admr!%O`~H zd^s$iFy6XNMtq8ut%rbzf|w7+Dgq1Dq@WPHIXcLwf@5@)6{`ozw4RWWYte(XzJlfu zti-`IK>CPMm_yJ*nF^jrm}%VSwH`@*UCIXmf5( zXAe^{?|BC0R@&+jqfk||c0St=qSgEw-XUh!2K379m0GNu>6UwQjdiHwYq*Nm7wY(} zaun{g46qZoS>#oemR2RSB0eTqfLNs^l{TVE-64+)`kNVj zX<>5S)j9m`4lj_p=kO83*#&ZCA%R25n*k_J&) zTGo8_-ys$fB*CpVRY~AE-LY5~z$I{Tad(JAwq5T|aSFq$q!JTi<(Fc6i1J>@d@V6( zN1`a+zu~VrF>_X~1caupv(kT5a+!L>+#DQ|S-?YUW)8E{>!zsY*O8gmVoc0V$K9h= z;9PdTPm&y3F#7&va6a}<5`LMMW^f4bbUI^BN8o#QQehW*!U`nnQSpQ6uY-wo9`E&s7(F8UV~n{_lntEgj_2onN5V~uq7-^5zSs>D4fB_btFI> z;wwf`UEAr!zI6R@r{C>&JKbTY+wb6MK>Tawh7McQZ_x>A$x&f|Ti9zQ9ke1`Q)Cc< zvuNa&KWafwHr)I&OGGImtq6%08#yACNTB4e z=v@$JhRZKG2Ja)$AwJB`xEyCE@#;AhDa*~@tF$Mt;>uT*m7GT;u%-nF8D#Bd(^#Uu zI0-8Y-Qo#XZi~7}xeiWt@tt8G<&1s$QWg*)Z4q~lAqr zLl=5>Od{FWXUt;$nFTASgx(XxQ_%1zWpNat0SsBj1(WLrDS@LAws}U6gIX@TmE0$i zNLx49Nz5DC+bqv{7u>6GEPV<&lXOH6DS~7C<*nQcV&lc7$2mht0+OXRmz93gdr&~d zb+JUDFKKsbr>>071`vrjrZC+`tD9o=UU$GtwvFWA>0;_^_pw_NfB*b}C+dit1XiUx zJ`7?bfHW+nW545G6qX_FRuv|%Hh3EsP!LSvAF)yDA8Mi2Bo_jQ6#HO${^5+HA%{{% zSFT^3!&1hhx+=$wxXVb;ibl4yeS-XOt~{R9?dj>OWZA2%AvE#iGBquea7=w>XJB46 zshjh3P5JfvtR}HY6u{BeO{E*IybLEpSNUW?SX1?Du$Rdc)s`y~nW8^N{PbeifoSS` zA)?=s^vZ96?|h5T@NW@k`4)=$e<7lK?f*zJ^11u(LsH-*$$35 zFVBEmSHc|=)IvGt4p1>UOUima;TrL(a8X$#KDNWk%ly-(2Qc?#{(RbnjY<5@FY)iT z`$uh=Dx1B;-(32+@=HIJ4bjeQ4s-3Nx%Sgs`?;=bKgA8`AN(=km#T<%zlTWNt^#(2 zuCW&_*FQtwV@V=Xaw)!zC4Ey&#%P|t;3fL{)Dcl|Vayr+7m_y&AzAW5-b$62(D*1q zDQvT3G{yYMwl%vpMBEVsuSBtoq@!3U6J=jTUjTibMS7^8$Dl2Qsr=nb=Xi>MBXy0G z+RZNU7T0mHQ+DK&ILeXPBl^S1k35@@S)md}M9_HV!bmBRn?a8E_ipRxkN?=6hTp<( z({GbKusg-Bi)93-{O=Tdtfa=opOJ7cbAwcT4Oo9TQPP=(l6i^f4MMC0N62n>xJCd) z`$&`}N-5s)`}e9Enn*w_9bYbLQfoU}h>3qAtB$9F@?~uzbuRNaFFkr?c%}Y*X{q;Y zrT038-fP!+FDUa~ROMY?X|pP+P>#WsoYQ1A#11Xa!KeeV~C;} z$aS~f>xzi&2_8?PP0cQ`7aLLSFKmmVrlKvU4oJo_{#gN4v}h39T48`MM5y>Nxb7?S z6VZ~Uj53I%3v6G&8J%ROGolslkPH1Ox`_VFKm;%hZ+zkii0IE0DL{&CUG-;%sydIc zCsl2(FGff46!|k|J5^4Ccc-7AggS>$vQ-0z`i`$EDD1G45Cuzf-zQGs1Crh&zy%z&Y=50Yz{_{yprF}vN# zr!%H@v_Fa4xk;2x$Tv%|@`7$N$-~TRnNHT1h-WxHc9R@w7VgjXIdpw* z9AZbzrDo9mLQE*ULSeK%Hgb?>qr&e>hu+C-=p?{KMlNNpTTE&)DB(raj}vuRuuJ?+ zDsO4EILyd}V?H~qWA3bD4Zfx@$oN2N9hfvh_D+#>n3gTJoVbO7I||Yx>ba=)V^~9Z zg1-ImK4Ohb^l59)XPWT+Uiy4aK3qd?!j=^810hWd-paM00AhZ3x59kd;7#oKNY(oj zvGd>`9H9#~`LZP7KN5D#3s6AEiLa|*&BV8eyY6I{g3<%u`7ul?=;0)S%^`jeByM1S zK=Low1R=anmmi5Fe{RW)BlQ?pa#;aTnE@n99mH8YNx4OqWM!ekOsbXSmf}8D6gBeAwc%V*N4O-wLD|21tlf14{f8nFKwNi6yCDmx>b@!;b zwsM8nRz@dLF2?=GXx&^y(k7gF7m7mc(H8WaR?=x|wUn_^UPm@Z))l%-F3d<~!g}|0 z2HoTrHWA0bV*gEEBjy1-2G%EEtS+)@d_1Rq5C-fnPuurGN}|u0V=``ha^?Ea2|E$X zivF)9`)~37TT1_#iQ#Z(4D4+Jm71n0ygj=@H!_y=d!-@UzVeSk4gdfPclg~4A;sYc z^BB|<|C3MUoW+1ln8{n43+>I~f@i+}nZ228bkSe%({-N{E7QX2Du!QJw^*ei5P zQ)~VRg@8Y>0KE?^fNIKgtE@p)sLpXDA8>s?xPys;aW41+KUzsw{`fyoHoN5o&BJv2WC8<`opz&t@JXR^5Zg$BLL@ z-pejag`=qexwwZ33@6Cpc4|h)z$VCvh#9)!-VWgXiSq68%dirC$kg9hjh-n+OL<{o zY1#=8H=u|=SQO8UPI!H2erSw*|M&$ANbkj;e))CqfA21X7xvYM?k~Tcyt(rK@890L zza6#hyYRdlw}|M+_YiVJBwC(){Gb2Z|DWO47l&t;e||r@n|=7R)4rYhozw2LZ?{=` zl86(E_3(iB&Wt(mT?9R5;1mG`EEa+X!U>Tv1duPn6pv*wS`-H-q>>Jm+lo2CN=j$$ zNWy8Cm-6Qt8Doi}>K#jO@jXVvm~E?&Le~`>@cZv~7_Nz?C@<#V#xs###u?&w+x4(( zFcoK9NTGezkyp)yolk!{e|OfVw{(Fqy4`N~a5!ZD?RLA_|8@@shu`&vgM-0fIOrZ6 zeAn&0?DY@71KlNlXW=u8_}O>eg~!T%+?G7|_uxhQ?F16qW=!?rA>v)&5{Wu*&}GG+ z-cFEx#mWhV6w+A;F7KqPK4M?eO5bWFshRip@r{MR(vn#_2DU&u8krYBa6-^>fhDRa zy=EAG7A2Jgj@Hi3UvP+NU2k({c#$R)QZh>ng5sV;5n2B4im_C6zh%m!DlRB_zYJ0? z9DD55t$wQZ|HTBk5o>MJz@2xD^8Mc*M4LUe|NGr;@1@!Q>v-<(J3oPIJU!;+jIoR8 zU4ULsqiL}x=otLed3e}iQ15O7=@wKEURF;)siHO;jqt4u2uxj)wjUP-fnEf7NeQ$m z=nc3*mKCuJDL5P`UJo&ROGY}Ba1sl&5?E%TRT-PST{MD}rPIN;NF?!WaL{G{#M3i| zJ+N9yXUKEF!@~}ngPpfB??etUnz`;B_&S5GxcDmwxD$BiuZVZf;MrG2GZn@H43ox{ z^g%YK%yA?N1LG-<1AK7^c0~-1a5FQ3K0x+fd*}TqxnnBoB)(miEsZFlK+^#|%o!6Q zFRbBB1yhmjCT(MT549A_6h4!1yX zk$doxApvcQNXRu|KC7%SaU9ohIA{$HUiS~%J2fdL`t~%{;89E@^2eA^BupWIq@?~~ z2_?B<($fp}`Nyy86RUz}yu!Sf^zj(untIz9!GK_oj)3(;*!m%~GQII}YxU_lrT^x< zfY5v(%#cDgw!P#+%_MpGg36*gkJLtl*-gL zDWuP8bp*&pwLcK3M4(PuvstoQYDjW=%F1RB2KX;L2#iT*qCjH6ixD=TJkg$~9k!Fs zGXw!F0f@bE`|1@lE?)Qa%s(v$E@ib-@nqY&-s(r>W-d301v_1}UDusGHK(C;!>gSy zW77*MKsjDTtyxCCFigeFawulfZ`b`Y)`p-_@--s&3RwSP0qeq&r-j@y-*W6)IZd?R z@T-i0<2EW$!l)*G9GY!!7z7!ghX|!;UEUo>N??3&$W&i#Be{LjO@z9qfsX@5t^50` z$%*vEd=CL6wB?VE>nf^Z%dn-X)hJm+)=-FOtm%vF+5C0pQ}(43L@?!{%qp0iI|VY! zBACC1`-a%Bfck%fQ&$U6#g_$vtD?U48{_PHS*=IdWSbt>={h@~ir8R~KV|0*e`YU6ckus(~* z8oI?=_9889aZ(q9FSa}>8KUL_m9$y<5~ak0y;>;Dw@kHrY_d=^U$kS+byB63n#)w& zWC2E}mzoq_S2F5+3sbklqIKC}#s5VTR$}MiW@a9mDeh)*M5&eO%%xbdMJE}j%(P+q z(@X3jhs$PRU6X-guIAsJS+4l^l*-Phr&S51nbV98&%Z^1E}Sq~ZGKGP2zu&`T=Ei| z)lE}N3|cu|Ik?hktAbv|^s(<_l_^@Xknvh)GCzLdq+-uOw{o&Xf2o!huyRvpr6y~k zE>dOEb1;rQTxUVGEYZKTo!%>3$s{D#VX5tYwNdHNhd0% zi76BYklo{rQP@^Sj8!_x6_k#0cG5KVzakn}+Iw^Q9>|_*Vl2w%!&S!N8LNAm8uV-BYUqe0 zl7XvjjD=q?3wR;9xO!ybkBeX3K$&7geNZ^<5ern@O{`R9!)cM&oQjdv>G28JZ7@a2 z3`Y}0$qYpsfo-BCPc)~VqFwfCo?W(A!ehksIdia>z`0zEy>MfB2~X+wmd8_)!D?*h z7`SjNr~gW(lV_L2)nw$A%?cr3H=AYU>qOZHc9f_%y%052j$g|o7Td(}H+cjqzYo)taD_eReF!Yy;#_t!SBKuEq0Np23{Uvvcl)333B|r6R>*uDM^HT{pt@C=t{%3z4{0 zx6R7Noz7gB$2W&0LLjS8b?PY+2+x%4OIaZ*sKSlD#PZAyY@Hy2?FnT)(xC-4c?XlAvEMlHD_ zL@u>xRHXn?+FzkalGMtoy;!_~*t$tg^T*M=!9_419#`CB4 zRyB7%so$wuqp~DjoF55TQw)>>zs2U3Tz5zb+$C6EDknD)kAjm zs9IL8zBF7|S`x&*cx_=hkQA27RZ^5s3*56Zf%zn=NITh2l}_B3)e^zqRV4p-(D$f- z6!x=-$@q_ll%hKSlJhdJ?0SH1JWbIUay1c|sw=We5-A~)Dl%CG zp*#Yq%)zdd;+lLe)oPoK8JODJa?ZrU8kZ8=q7s;M;9fLR-7hJ1a_3#})lQhacRhA? zFHN_VwfdwgDXZYkqe{xYmV;cnET5Rgbg90^NM`z64x+iLe?mga7X!S%U!cdiC6eTp zW)x3k=H(nJPNvu8Or@;Y$SwV%c4cGSWG~CaNfgOc5EJz;=fqC*S7uj?OF%X_C`E4QQKxlhPZYWr-4tRf|V>iqBd^*5VlzRM)g(zk406ZjpDc>j)*>@NXD3` zh*f@)7t0un1r^nu!i55RiaIJe`IZ^#B>KoGb#cMCw05>YV3ah3$;j6iSLkk^MKr6C zM&(p0q6Ao5@bJJZsYE?|1DA(GH<(VmqJW56U#(0V@&Tohmadd9B~vEx#5FGQe2_V5vPubLGn zQIX1xaOx9U`2{L$MXX~gLL)v(RTs_iYZinwpOYw_`LNcshYGqWBx1~9fZvNO&8Wx4 zk~@=b1<+Y0m$cy!`Bc>OP^t(~!$hRZCygeRiyk5yS1)^{2y(^ZM2zPmqJ*xKHHi^* zzRguCl-2qU(V)akF|RZt?}-*@r*=eT5M;a=_?*T zqPEOMg%szfKem)#{LG{O1&D~q`FfgQmHu~_)BlDC#{RdSXCeJh?oLEL3wo%dE^5G= zDvnAQIu$Ze<#?gSqTV!dd?Fzv+S^pMcUEhJdi72q%p27ItS6|2#fIDuI4m&Z*4Eu$ zWHpOcjx{Z;hhd7Q{8SK<1>OfQ*aXcyid{)tjPJKVT2TZ{S6Wm9jpY+{vQh{80uvUU zt~fb?=bkG?h*C90plFK~SQcOy7m%r|y}d|IeR`b-IN`ayD9 zIsk>5dP&n77)V96QfAa6s#h%mC{R;tx7N;6>P4)i@<&l0GlN9$V_R2Dylp+;3A>Ry zEncQI2cT*X60?*Bk?vKaPk?$l1z1$C0JU`s?F=VRfsRp0GwM^QYk<|TrOY%G=qaFy zt^!K+6`;{sR`WS^bmfvQ)XMH@pJa)ay5U*k4=wspFOKo9shiuJ`Ox6y?^QjQs)aG1 zS^3dAPNM53$YHxvMJzQ3$?LggOmY4CVW2)I`w)~~ye>u&MGhbzyl3eU3Q(GqEw5YvsQ|!HouU(XZ zb@7{G|3tmMa(25$sKMLcJ(xi*^{yd$n*LGAT{>xna$Dz6Zc`Z*<{x7mK$R)Jp9VEJ+f-rcOw(V7y7f%-n z?wtD0nMe@jHI=R8K=|ytD0RHBLE(%}e1iYQuWgSDK%1kY=%^6d_q{A?d=AMNQKhtT zbwU1LG1b-NPxTa6=1)i=Tb&y8+P#Bzmz65bW5TLX!T|qD{8H z_YV7p|F7lQX8xaUkl2dS%~rwpR~QqUnZ-8^BYjJnuP{J1Aov=)XpEd=FoJFvoeSTK z3&U)mAd%|}=v{!qwwjd8eF#6s71Vx|Z_qTLcPE&{F9PC6M+9=>H{1jt|LOQQ-VG$q zo74A6qli{Qiah!kHsV_s;%W5j#1H8wep^t2a`f{3>D%;+)AuLI3o`TGgujPKScbj_ zr-)234f##qG9?~RKZ4|UB@o}I$pnP}hTsOdZku%wX<*0T$Inr>Z@jx7neFKV_GY(o zfb$6s1*HQRhAbnST~O*fQD+2!S%|$ccoPI~$kZo*Kz7Rloj?zqy<>e9k2MQqvV|)Y zCl&PLETjya&nNSb#wIYizR+Q}bgfFm7-PKvWSvUIQT^dm4tq7Np+ND+Lnqo;cn{PqDI>c5%Y5wrFRj@3JMU zF@$o6RE<_SP}wM{i-KyTOG{c|XCE-R($D;9c>ePc=jG;q4}0Bg{6~Ly&^PD*I-b(v z75Y#P@1`_uX}p?0#+y0|`ceugge z>|`R+@2Y1b-^T(-oH6g|XQtHW(NTZRq;=ZZA(g2&pRn}ED<|qG6UO@>VIanmf z0_&}$6)U~m=LC*M*ybk4>Pgl%%gO#MPF%gha;}ng>Q#|7zVMUpu$bhy_^l^iRDYF( z)I?Z`VD8E;0wo%nvY>!^LnpBDc*Li^?Yqa|{OxHyu9g&MWOuOF=c(D2@h0x))-)Yz zRy(e2iBV;MnPp4L%BScdQ%3%=~^$N!o7f9rXc!T)vkj%Ig8pQSo_>IS97<1Omsr!0K906>t7U?>tC+n@Pg zZKg*m_AHqXsanW*4G4AK&+;h8LDaEso)mMeuH>k$(Ow!K`_Fn<%O~U$iHh3pY1?XbE_sQ0r79|;tOP%7R~;y zjf!lrFeafrLCK=y)6Nu8g6+_%BY8?}d7ICOF;47_ zW0PO*hkA9sD!Y&Q@?o zQ@X>9zcYH$KF@0S!n#)JmQ`-Ha;F{uTE|}FG4k%b!cWkBlZUcH>K%Ga11NOrWx6PI z;}zf%JM`oSB_&(u(^XQRh`#DSG3U_}yH@qb;;@A%t3?6~+wDh5@6^y8G&@7ux+;+NU*4+23u}oIUf9N(^ zH$=jY?Gw~;ys&u`Se5^$Kg`yD7?}DGYkD%eO0>u)UbxoKuV_ri3l}%CB^?3qPydox z#EyY{JHOQ}CD5>@JZU60$0_IRC*MOmDaJ0D`h?P;C3M@J46Dpezb^VA8^NIEp+y~K znQ5Al77&4KEP?d_5QWg$NlYrKi9fGig)O$sY)<9MrQ@2n%9*l-&;0zqz89z}|K}iI z|E+YrV~{0n7o}acZFX5*w%KLdwr$(hW!qMljV{}^ZJnv-d1ofxZ@!s78F3;{6%a(4(&qj+ zFf}#jFCt!_ObSF}*~wx�kzXBg9+fDG9Xd6BTd&A(bzg#aWp6$?;n(RW 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

y}~^y8+ME=)GjcN9AC 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�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%0DI`k-yvESz4yr#8NAKUm59A(8v3=35L8IHYzN|DG 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

q@ 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৷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 z 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�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�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%0AQ}4C94>p^0AsyXw3&i7 zZw;P){SNcrbhf7~`1}U?F&D|}R^^SC*Qwu5vgU?J(lV9kJL>ASueR+F zSJq8*$C%NA6|coP%f9ES*Ds9^>pEyjIUV$@W7b|tXC}-*o2Iiyc$_7Syt`vI2c|aM zSabI~hJ446?-=qOL%w6kH_wpUcSfJ&{C^GoPbsaFVYm_uV4ePdzlr~J@Noa=&i?OK zo(}w{&dbOyyTInPz=q~}9m=5ET>AIZ3~9%B-;Nq=2YS6VzCZA0%F1?DnuBBc^)d4{ zbEB|?paZ4EKfq-B4!`No{M;b_Uuq1#_Wt+bVH5xFaCrZY|KG;*8Tfyfx%Qu98@Psz z_f2%c9U9=>v+Z+r{(r%WlE)2jj?Oc{8vcKvzBT0khY#-X|8C{+{eRY=yLxafj<5Ip zXyJNBoQmYw%?Lk6xW8L;7N@s~pSw!>Q(PjO%T^JY&VFMz*kimgd7| zvCdmSf(F-(7)9SKfLm@#fB- z4VUfq>vp4FukwVJdPQM2|4paw$NGZwkLSYOle;$?tbt`^eQw2{ezx8JqZv!*e42@Z zZCuBi{eS;x*u?)mcyMs%|8*-*pPbUNWJM-PDF_ZMxty_#j4Pf(z@ePR=XAa^}6KSrYU~#-?xxB0G7(Cj1>sP~raH zb|dmKOBY0BkW-OFa#oO(XDkY$CueWYN>Q+&Pacc;Tx8_u$7dwrg$$x8F9+~1k{?9l zKZ*hTYhKKz1ND#jDKD~tD`-sP^C~A3o-!GH70Jsy_$nIH^Wdwfoaez;|6kB2KhuJX zN|KW&Ph}A0g-{2rAmRz5158(l-~JsBG~2HKS5J?hJbxO^lP&64v;L0`4x8(L`0&A< z{pYPbebOFe@*_*<1aHn5Bfr>huCeM> zBxi#}#1ekMKW|i`!7iDIf~X4B;VKbv1wrRP1N5fRMwGXpiKE`UpFjPzvky8tp8PUN=~VveH?0Qz^XpE(_IsC%St>50H?@w?M6B%#oo-Ec zs8;`!@zw3FvhJ2+OJHj%*j!vN3Bm2vg#Ejnf~x9VWGpKsp;C&N)6#4{DkV$+I0q*z zg$xjAj{%rvRBO7WV{PMY%1xS|PYVhg?y}}X0(OJL?iahhEtqb7OZwzFpB8{CMJ9!q z6IrU+-9?isVI`Lcf`5vN#5A+5=UJGi>Hr@E!-)JcWhJah%|CcH5x?&Ar>qR!+fcpT zh2*xe{mOJVF8y7y5LH2#Mz=5n4+j=fNfUT6W0!iSxZ)e5R|;}*KiZG>g8=_)^aQet z)m|J#`+Gz(hWs_2(QL|6G2Nb_4#ue%4>aB3L9{=3{NwS9AD%vY`9m~MaMb4XH#K%M z^jH-cR7!J;w--vDsLB3%#!QDNy1kjWgwzwE4x*}|x|mTAd_|rVBF|Z3L_??yX4l05 z*}*^V6HyR#;wuO&)ZZ&!uw*y*ig?gq=WIbPsrsxsK2e=%uP=kIocg9Kp$Av0M&z;2 z!-4=N{9^#D;(wUogq23VV-qFyYOc$(>5{d;v$7Bam<(@VUG!sDURcf;PNi@R<%Qgq zw;Pey0tQ*}CCgkD%NIG?@B<%8SV_4$cdOOKzy`X-1>{Uzk_&X<+HmRPl2;28zCo-F zFe-DaOK(7L+nL{5i)?UvXE8|cxFX&*%6l7;?-oR|vb0}YKx=4i_I8hyieKa0y5wo9 zLApWySDDZ}&Z)lOFkng9G3)0)iSKKh^mtIfP@93i7`1qQvnCw zMtVK+Yd}anPM-yV?3f%qOm58pP~$jdCC(aHHjQC6T_Zc0)VQEo{Kue?XHXW54dzre zbzt%j43QzVQCl>lQVSB7gN*(i&sF~}&&uq}Lk69+!h#cpN+bOA{D^YeXN92RPtU$hnJ1YWYXs%Kf z>4XNo$< ztdG0B0pOBQ^3UVv&%%i)=CmwX0{U~6;0cRUS}<}!3$7%7xL6o7l2a*JLU>jRl)|kk zNrXTbcr6at)r%4Ny`l@Wl5!_)pIZ&;+=`GsG5)Nmx`8rDNvGs;CM2^S&0LcA?@3

2B9v#2?Z#p*Ql}%d;mxZw)whV`Wb#6krv;OE#hLIalO?2U<8_cf${8zg>yzYi z#^V{OBqNx+h2s%Had5Fr7>BGhBeW>!f`|!uuQv#r;Uk&TT#}vhuN9wIq-=Ljo$38N zvMj(8W(NfL7%y00FUJg6rQaGtx=>E~o+#l67%u&C0AED0RqS7g^La%6F=OU%p6n5{yHsnhc_J%?Ih~`L z%3m9>ecPimu3_fRz-q0k^C3$}IV(gpMSZBGb7p}5$+#-(8Gd~I`t&RcYA5^=cyH@N zKA-`c29NZKw7s_LtGoN?sPXZpBXY4H4G%#CB}C4sUYskICydiGE=x5x9Wn!nQ%-0x z17;mZ=P5p3hhj%8Hjv?vXG|1x6~}Bdm;ZmKz;(E~Mn+l&Kme zXj{gNOhlC>WX6ha3ADQ>`jwwj@QS@F2Yty((5N-Ps0}BiE^FYKO`X*V8(&Y7o=dQ zZA(ZdO4UlKJJM_zHa~PxDM-rb1w;K6Rf{nenT)xpq%J(33AJccx2y55Br77^H)$#b z;h9>;l7aRsi)N;Szg~)Jj0$WdcS*A>vZpqm*x+n6SXI%ApL{27ZZzYK! zmo%%j#>-Y^TEAFV=<4!Qo~cAM`K^+WVy>#lSj?oP#R4w!^*sw-oK!`+P)iqjXrdU- zJ=f*;B3ta78&HQnA#q-f$Z&suZeGmU9C*Nk!{^MzNvXT`O3R6k@%(h@xx=~|$ zDmgIwGgcBxUSJ3-ZL6dPc@*?b3^^ju5Q6w1ra_-%f-p>wvtrJb)D>iYK^+`8=#yi& zsJ*G>%V#sHb+ArMD+LU$4d)oJ>;l$Lzpv`J7{MQe{CxcCZjopY~6HyKmOEU@T@lZv^_jI zhz=g=Ntm%qbujkGgPJy?E@jzNo!TsQaNB%aB&v<>8BlOFVu9h`8ns|#+a|Y9PDNst zkC|(3!5BiA*(LO$w_ua#6Yc@aR&3;m1u}kuYgFpDVNMsY4Hs;}iUJfSM2b0Uh=uCp zpcYcW2#0=LkW?)TJ>&5>JRvU>pM7e!K#Q$Kc82@=`+wObV>aW8lM+QpYWWd%k~$`O zlyOP4EmlItRy@{cRC&qK&=XBQ>hOPxi@AdKpm4D# zqpxO47EkzO!r&Z^a}(+RUJ;$iQVH36y0c)WDnWnDd zh-SWp3X~Fc2u@g$Cjnyr>=71CBYRU%b@M^@=jyaOxjF!-CB!rTl4GU()+dHQeTUuD zG3!*P4g9^bpqZSoLK-e3CQU=GQ;`sn>0ZFSAX+MBVJ+S!?C-2gmuc6&iX~Y=NcEHL zA9c=xzu~n&H_T|cG^B^+)5t>Wg&?e6EpHt6Qh=HejBUz-GkvoAO^k6zQY*4P0rhg} z#Dvtt__+vwP~ZQI6o^6$OR z=&W@{HLDuci|4w*=2VXn1p>EZ6nGjlwjQ4`S1N6N4R2Efk#ogEqKpCq!&B!rXHHsN zrW0PKFM*ZK8U#4&&xIXwXpF>k)lAbigS128%|fuIwVCBWV@P;fIzvP>Gqh8eH0-l1 zPyog>uUj^73-bv6({7f?l!|%8Gn1`6gQcXjX3D~u*6RSFs%~N`x?SX5-r8H{7=J$d z){8#ekPcr$tJ0>qPX=o>y`;^+;<|caVKL}@!81&EJbn5!WT|Wr?WX5${Xv|gH$+=OEW&= z&7_QbR%3rOB-2-dZiJXV|B!h>YaMmrSn~y5E+L*L{;eJTa=(!@Vs>}iEYc5TFgw!L z4NY9cp0N@-sTvgA1@o8A!?B!#zjs*#IrfB+**s;LrC*7}*4x1TS3E<-=~Mzswj*8X z?k?!>QITCIQy`B4O^0kCnB$O2&K%UGiRv@X(z^UJv`R02=T}6VB>RhzT*^2_&lw8+ zbu7m8B^pz{u4z_675H0Eqz(IPbSU^8BX zQrfO&CyxA{d|ny0E#0`HP}FQ)R{41BDl$&pXjt>Fa>Z3`LaL*o$hXsALv%+M|1zsm#@pSqX~%a#s{`kWWpn3+o~OAM zJ!BDHlBSFd1r#1ZC;~ zS-pk8Ow2eYmlh7AN%s0brJ?eUK^RCkYcY)+X-s_g0JWQm^OjeH%QUNMeT$0PpUJpFIZ`b3aH5xE~}Oj;9n3&kyWQU z75Q`+%hPA0(P$kU$pueOgHv^vQ~I?>I8ho%-wXH@1s<=u?8Ij&ELi@Wd&p*C2;cp3 zx*w#{Aw2kjZfR#+HB`1Wt_neW?CDC#+0>>Mb(IL&pee3E2F>^*89ikRjD3gB0|=Uh zNqvJTMHw0Yz4}}JC-a;BQqjf#!yq>CK9nGuSm|GWu8z*bs2}iAg(@^MR=bT`)kE@uD`og?#*V+4(0|hp?YH_NtQ)R z3e0*N3ki;EkG7yKS9aj4RwfVj6JY%5W*5G&i<^@15UBz^N~+jhdz?gf2EoL5e_C*- ztqGvdft}!9&~90&N|$+&s>kiUc*RFx{D%DWm_{e5EQd%h7e^M39=8ycZ&;SVeKT*< zWS1WMn>j<2jQbclg42YbL=JsXcLk)lrAs>E`a7HdEw=~M4FtnfIY-X_^+RQVFgmKz zrB7Mp*LV#-7imsi9V$`BuHzZbBd@Op`XURzmO`<+T7w)(4qfb5#=lRNs^qu)6_Z2ZD~X}q3ue@mWzIzA6^ zdFaM`%xnqTsLS3SZD7V2xg)M6!UNBNv`1SvDGeS%zHVf53A~JG_<057VImRjrbGUde zUq?30d0q&Djko*HdV;tKM&0_jR;+Muj%>T7+u`ey71G?T7E_(oXeywBZlLg?ypUi)3QQ)oS z{Us{4Kjj}pH|)Qa2;)0TMb(T_R;w1_o0R8V>}Q`Y-K{~_tP-og>)3u_TVT)D8`>;Z z-`pIEl{@>FAPK-V&EMAFiv|umeG1R^UsIzwlt4bc#ivL2?ljE?ewH>`1lAjNBZ%^^ zsJK6s6C!_UBUM?pM#3%z4DKeJGdqsytb#8eb6#n>^>cXC^>(-Bg1`&WNcps6=@=gh zuPy6MyQOWx5OyJskChy?o)N^@)rt~@OtdZMy8@@^J^HQE2N&8NG=)B-n&MWdAevDN zja)FdAQK&ycZUen_Y;oQuBK|xk=%yE&4*>=f>%*2i{%|kv3Tz5^dCcAd__#L(+8+R2F&3D>U}rX-XrPcWF7l?oJkGC3my+#5EL&`78l?~ zZGJ8{=T&bvm^Wl9n6<@0FFTSoJ8^b^I z6Bh>G`FnYEpzN7%oOayhH@)Ud8+_`+k8BV~boG>15n;2JSTaqF(7(wuP;*(o1J?w% zX8e!7RhfjM{SU0vX$SfZqi8?&T|RKocH~0Ie6vH(x}*d0)U;wRys#}YG2a6xJunX< z?{IKD@06(;BgOSFm4=1$4%~{MJ$5{Mom$WC;`W4M=h=qqX%0e49U_$oK$1%7;^}9e zU)f)*XLeTuq3S$v+ve`)Q$qvj%BW|x2#p^1p+cRsezW&*XzJOC2jJuK{!99SNS*+{ zTeP;_2c%6LS&wnlaDP^fE##Ti2p_fpTjN``+ebZwVM2Hu;B*?L{DshU7i&5h1U;uZ z&N)olUSD{Vdq>4lNM&?2^d!iaJq3ONP%^%=&@S;#Fwz$$eFqhtVC@pvAJ?}^(^#>m z{H(zq0o+8`V{wHLn{*;mRQdk;uKy9%>t7Wx-Ne2GgiF3jHOe$oiL5Ds|Ahb4Ekz-7 zTa=s`iwR~|xs^idedhgG)Pbe+s~eR2Y|U9OO(wD>t$Z~*V3|xg{~kZcLGuR!%X)eO zhNJOq`TJwVH|R7ao$bZBe>1d_PWJ+Qs6>E(DpEpI?D%)u0aa7N_8v>v^ChO%mPQdz zK7Fd|z0MCtVK#QrS+)-ycmVcpMFPn_AlZz^?|G6gj;<>VEaK1Is}pq6tXs)H=E3!_ zQvngw>~-_)`IosM5vsJUJy7J_W2!HYzKm}Ox zesdq5rTi4)McMHsWa^>2Jx9i%w=AX82{2aK8u>nPv`&WMR{nz2X>P~Mt`8nsNy@0p ziHUKy@Xhl8xxQ}bXX!!VmH%CFb|#=LF+L5FI+?VBuwuJGA8eD;1!h3ZRai0(eN+zd zJ9q^}DcUo!j+R(JN=`83pZ%`Eq~-i?{E~~%i@~dQUsHBa*yZg)2!rvtw0ryBDGjqK zjq|?!o7F!381L2%%7UVW<4P};_LoHjFL^_idFNG+ecEo$$T^PS=6XB^4sv@7B<4K ztg%S*(q3LY@320!_0B$S2@f3j7nsZ5{;|xidb#z=XZyy=F)W(mtyG^Eq(xnh%U$g+ zT>!oj@a`p%-bjJNQ5%-frNYhyR8gaua>faB5&t4@gu1!QH}84Z%~m77&cM_#`m9rr zmVxR5{BY{hbDWm4rmdsTFNn^DBPhg#B-&b_c~^=(M=3APJX(y!j(=&z5(O{o4DA2o zGtdbvP;bEc3^G>{cQZ~HYP#H{?6mnY8nmL{Cw|Ghjf+j|%O~G1Wi5PSfN6cD;IMMv zf0K+7{3TFO&D-hxm+18sLhokRM15ZL#aCXD6rVwkcI|%y#^AEaevp8lWlpXA!w= z!Pd_~i`2oP4i7h*?Vmq#F=$IufpX)Y+9<^{M;a8Wud6^oUo{Zdo%;>5JhLOfyeXHA zurdxpHx*!Hds>A9@NvBm4EeLUMaJO>~c#BPWUL_;<{kj>br894a;nH}9Lp{G2Fwe^5Voo83`9ioxT z>_pt<;E4q}RZ?&qYEr(96{3~sBKbx7Zs@%_v!NM$Edc{@XBFXy9mdEVdN?%zm@NecrU6V-II8U3Hi)SO%@a zC?|HJCbF@f2~pB(zmzlY)hZQE;xZ$`Wx!t*!^FLca_Bl;ZFH|Xro9su;Poj2P4OFR z#%D^WjSSSFh~->5?ytoSzHRsC+y4Feqs@gcV1dHhN?nltX6C0is6tx(vTv(PeKd8w zJgUJ=qmsuqJ_S2~%}&RakTbWRMY zezg6#cfO&4XZ1SK{th_rfKLMwRdrns-&2rKT}4ou@e_8X<95T0_7f_Om?>x0-mBS) z3ewxh>HVA5f*WNh1>>e5t%t8X;~S`%FYtI z7i*yM@qME=jrRc#;>1+OgbEOCG;zWMCahX2>P53^Q;R*Zp74xsXOv!I08>m#(> zLb54*7y6JMV@f@)^@@y`6-GV^XaRb%+BCQ_0=5$D2;F&*6N%g+NCWJ;;dlb;Ba3s# z8XDm7W9sbM;HQ7o#k(Hw1W3nvf~yXF#~C4?j6Da`YPp7{KA+nwvXKWbw5+C^venZB zLaf3RTKa{ACq(55ZyYYPhz0Lo{+5gy_@NUL&+xo7y%|W>JX;k=&L8IDG3P8-5rLE! z9WKsfx(>#yip?u{6XvYKBUJfA0MpxA1)@_U=jNzWWf`8hUXuq`B~SZ5FAY9wMqu>a zTFz})1S>A<_4g5HwTXdnhox^wv?hnIgg{rp_wV~yFBr={VPU75$ywd^2^QU-HP zbksMFKg445FD;=6dS$$)nnN-U&uXY z5zT+ncUu&d>qynttbtc1-_7UVjx^brt1{@=k)nzRMQm%N8tWFGRLjv1Z5_{Ka9pI4 zkKGw8%?oi70^|$%y{h+(7^3z#*eaHs^4TrXsjzK$v#9BrYs`ogalpjbaCmaije&7b zlx&*2vDn}bHcQ?L*h+KM+Vbgt1N1gEFXt1C|=8w;{nxV zzk+I{K&cjI7DD=AY6rJjzSSBnl+IBAm9)?TgpS4qHcx4B+&@@h*`56qvu+j)D@`}R zL{kLugb6&nS!Z0B2-!f-T> z(b;H>*H>`mvC>a$pNKSD71ZI4lDwrRPwWKLDI?>xV}j<^Uyo8VvaY+EF%V6tw7y|y zdu6a9Y$yeDkW|9dXmgw&S4wuHL5%!!&-sHHb&E z?pVFY{Y6oGbe(h={bXlXJC{mVD&;`6ABk1D>B;53f!iH%uBU4#ms@dkRe2@sTxAb` zvDNlT@OyX!85!Mp5KR!@P&|A@1;yviddaUa+9Ev10s|Nlkfc?tT8$-j@qoaB`m^8Gow_61s9HqRm5fxr z+Asutc0H31E;IWxAqR#y>UihY0VLSRq&yg0kF@cK^@i-Cl?}is%yu~_33wS(F=ZBv5F>p6B1`7P>2Cw#ztA5yfQ?NBZIe|0sz%8%e&Dt0QL8(;!<*eZ%B~qyAr|fs9 zH?P@Xg_SP2jy~AMK-bm_vX960ofgwqZ8Y$D8DPWpu;-)W!~54epqckY8lZtg;UYHD zD=i;*Boa!$L4Y@yM1aI*#G8gv&QP1~%Nct8p#}VvXY@vv3-R9LuGj$Jw1EgBXn3lYTSLjRMpu39e6~Vy1YCiB3rm$ z*${WkK>G{nOo*W%oNvXKnpY$m#A4mAB#IdOC841p>UM;mo11r2;BckN%4c$$nfRyQ z#YLQXv;$PjE9K(XIEucqtZpi48@_fJqev?$oG(zXeW>r_Yj!YS>UtM(=Rq*YrfK$+LUs?U+4wr1 z)Fer|SjcV>zKL8wn5|dHZ_PmQkDJ1Q#IKX<>w&kP*wPpr(HyE*XIBK(yzvPxZc2w5 z9B%^OZycL9X}Yq+IJ^^2ama@WdsM!;sw{t7YS?nK=9k4XmohB&8O$sq$Ry+61d}$1cvBj3TpdzigRp^+~K@Gi2HIXv11aIaI9# zWppf#v+IJ(Z-e-i2R)W5N+g5IOHJ#ZL7G|G0NI8Rp~nLMF`?$~ESG!MBEDa093V22 z!c5%l#9eINKlm)waqU3*hGNGzkLUZcYaY>ohhU{QQS8*g1pT{2nMkaDv~qm2g}Y%X zrK5X-Z?I*S@U#|PX4hTbw#gctD4{oF3R~g=@Yn^ve$l%8e4!wXKIN2Wo-c?Y z|HvEATlqdQbU*0>n9wOe=IrrOXiX~S5;7H^x(OSzrq3fz-YD~a28@Kf<+7@nE}*(B zN61NH7C5HEg~W#pAK3mYK70%lG=(|fiv_I>HYQHWv?;;Dnu{YvTs$^t@d1leOT@Hx zN>-F+Mx9T8%?0f5pA#!E@4L=Ekp4-;{JQ@H0cSPI6)5ri^$qjL=YQ+H9Ncq0WV(6a zzo_7b^1_-AjPI9TVks)p-$}vWA=gFm4dj2D`|6qOrSQFRk#FE2o5${?S9B6FcW zQwrS2r$jH~_k}LCV*CO4JbWFxKoNk^Zl0?H#3AIiKMVY~Chk1(;<>2HGPnB;#NDEB zO|0Zv_^3F?iA#l%bHds=itldUK7^t|M+irQSvrL0c5;0wJO-LFL9em5Pg&+BVa{QG zB}d@pg)Q8r8^D{|vL0q1Gb%72d*dTwYld0IlX6Y4WHW~(=qH}$1Ydv1Wq4Z1K8(2l zwS((*j%eJboDZSH1Uwm&N=QXBdc6>Yes%}Bnl?DJ^7P%ZrgYGK>pSV zIpzSvezZI82A;zkqZK=VD1`m#^iuZudHs2~G(^N5x8Ttk3PCDs$E9CT6)9-qZq|m*=ZCYf=9@db)P?>P;F_C2*+v9+C+wql);yXe zpOikxC6ZomD(P4gD|;&zfCus~0g*bOo);S0e6Y1$e|K*6t-v(vy7T}JG)r;Cmr`(( z%Kzo_=2UL8GNkr|_gPT?k)5?L&-P>3j{K?>Cw3|p zspxui=6-L9{Qxj!kiU>4>N|ai@JSw$^Vv^{IEh<|P8&%|-W@(~E+~5h>o_17i)cXJ zI{fX~@zK$o1RiO!b6`7&+a&efKooM^knP#o5IfqyxRplu731y39EYuY7R}z9+T417 z&SB_P)08u7QsNs6^F$u5ZC&1(mR$0+Y6@l3zSTAj!5nT8_}VOm2+qU~;~C0^5d~@jJ@N=7kjEa*c}|PuqJC4jQ(r+RSrKGH zA#kUb7(2?sHhw64md9&xN!wSCuAN8k;hAdN?$HLTNgBqWssR-w`DKPA2X-ktF%XxQ zQNIJ4{wb8RFP4k~qS&L)zZcwyE1~U}Ho;?v@o0~C>w#WZg#_1}fzwg7WCrN1x!-R>Evc2prZsQs(#okWiE;hbrx6eK-z z&=XkeoqsWnTx>UF^arHG`S&T|$5PXMqHAJKfmW0u6+i|{2B7;VSIMFz)XHE=6Z=SVxM>98u`7%6 zg5gF6cD7hkx_C*7FpPfkq1Ady5pVYUlO!22ktiUHX_x^zop&2E#xDS(t2;nDgloo} zc+#i+N!=m9|J4xCnk#WV)@{-8`}5*@I@jV5d+p;{<9$Hosc8$)%8HPvQz8Y#C=v5l zVApE>CvKkX4ba!OH}GvRV$x=R>B%V#BfcQ@sQ)Y_0He0ECNN}$u4Vzh2N?Ppo-iJ2p)L*# z8}NM*PD^wKxev*`nCNwqqM4_BAy%+)jr@hu9mpvsGL17&`fT^Odh^b6k>3V;18|cN z;B9;XY|rg2;JE_?d~X2;GYditMQHyzch|DknRpbj1;-J^0la=+6+F@nP$yi_g8sv> zorD937GPVu(f2eMl<1IP#pz7QgxDvM|G?42O}i;R<3g~aB^kCQ4#pT!`sQ4S@BE&= z8k_i#&I!#t=|l@=fyVDJx8#wE;9&&xW6L5=RY9*kiL zd}R(o&fkE>lNU5qKM*~}5ek6{t>6^roVdl47C%k;=~WD6fKpDj^Lx!*$nJ=TIt$SX zKf=Pywd+rjiJ(F{WfujXD_YAsuUf(T@m1ehwLVYa`$#pk^=bgO2&v0c3gemVDrYBf zYMA6wP%3SMTI&cRlEl`5c<5hZ@Hdll{0fii+|0|xn*4mh&FXK}@k0zVRgOD(r6^D^ z;H?dgh2=mM-N(r!a~!N^dwv6xG5WK8tt_f3>Bon>1Jo-YZXcAz{~0{XFmh5lBGAcw z2Frcu=~eh5R0RnlV{ua^sQ}eR&pZp(5bSpgykFb&E81&8sFrf#EmH=CO#3AL0EpXA z>MVw7A8mzJO0G*%p zd^%%tViirD1d)%VF{(l#@K}JuKpGGekxb(m2tI;TW>PP!K0%I=iQW>G$=#e(AREwf&6k+~Fw22<|be=Oc zGlz1YqY1HEu?IwJslnhhZ1PV0!w|sePl&NMis^$UiBi*C1qV_Hy|Q z9t$@gGtXA^v)-U=v+k0AlgKq|NGi6jE-$~Hsv%>n$2DG9v1Hrb46R`?;{Y<-g43KN zkx9%fG2yqib1E2Rf8IFKM-kP9oZ#AL*>xh@ISK2m!U8;Z=j|(>lesHm=q(m~NW~a+Mv9yKAu9T3UWm6JTY;bf> z&INZlVkd|_O|AcD6*7Fyi4ik}=ropdp6I%o;p9*(Stra1@dKu~x4c;Tb;!hEGcQXd+l z$q-&4pMbH4O29t3`zvy|Oafn5B2vx;sX5-`dU8fHrYCkB^uncT^QfGouz`xt(P%ZP z=a;lHjf8Hfs&P;XROMor)~#x*nc7ns9c{TbxF1?j1s9_&UCB@QW{Pr!JR}v0nPWXN zJs$>_MdXNkMC|L;dgG3@-mE9c@vwa;0itlmn@(u^`zt$rge1Y0SFTYX^rs=@S8zU6 z7Kj!NFY>PJJ`S2@=zizibKb0s-yX@XLT?7yWa|)P&Ya#?Oh>vktaSfRYg*n4NaETW9D#jo?q|TCYcH< z=_&fiPi&s`f~L0qM%X0~-{FQ2&fe|{RqzdxJt6rgL`Wl#gMW%2zc4x5R6h^vC}T7{ zqjB7mqQEoRY=kx00b|bd-1f9QslNm%NXqNp^lxf!%2ip0vk!as<0f#HY#;2R{@v30e@lS6?-^y&rSe+EeVBc+B@is1rmNoaQ!!~SID z?co$IZiJErHXN4E8Z4h1>}4N&tZDYs)hj+TZU{th5ZWSug%hQ`#~YE$yk_I*8Yak! zpK5Y!>lPferZM>Q3v_*+__J_C_P7a=q&bG4y&L6aYEHd~e-9 zjY%+P|Jg(=NDXi$A_Gk$jY|Ipdoy+5&;EpxO?wma`4qf<4|RbT?&lOkR9;!+=Z=vf z2=$DC)#yd1@J{=MFPaTz+kwQSIjZk~7!TviYBAZx3LSeD(U12?@&%QQ8uA|fupsa? z68UV5=Ev_-JgT8b5|HFeVdx>+?m17!;WAq5;N!$G=rqn^LphmM&pO!g;G(?o3l)Hu zMvKZl&h@Jyljf_7XdiuEJk`=Own(w1Mh_P+W&YAUN(T; z<)K2P&D^1VvpEb&7a<3%B4NXhC^x#aDAw_v+jB$U;REEro*ln0GwJ60V<%lgg_H`h zx|HF7)S_&E2u^=1sF^7#MEW{)O@2@UmJY#&Nz5J-gOh2GV}E9^A|{Pki|u-uih=B_ zOff_;Vr|1QWmSxdUjS-kH5h+3meuTG{0ecN{+|4pmEeSlMc`#n5KcVfn-c?TV(@(= zPf!(!x9oCO;8#v%!TD&6CKrqsnZz6{JWLv{Jxn|}&tIe?9$dncu_)MzbYO=#LyPC_ z=a_S3S0~rUov~|W#H1-OqJGJsr@S)lgYP|AI`hxYAGvJ3?HDOm-*Yh0#(@~rv19C7 zgxQ3N)+d)eHUhQi0O4Vq@{dzhefCGW5F)d@DD0{9Kf>5crr<{dOxTYvspDehEgd^T z${(gFtAYgFdMlM4oW;dPZtg_!x?+!E%W4+KZ0!tPtTl&sl7#U?R^Wm}v zRf_umaPSvkGNu<{DMD-}MV3tVWl88rV#B6x$JGbi+!0@{u_H`y zy>YF>2fG2dK+M-bK`tRR`3WrV0GVt7>}>IHayuLVZg6>D0o6xukL535TeD@qI$26* z-}Iz&#e6iwQ065RybyD1Uj}*J(t{93+O`I?@A$N8XvA{WFNNLjUWr|dG**C&5?DJS zW5vY?Sf^IzEaVjrh`86o{jFSpJE_-C?Kp+Nz=vmse%e9lqDzcC!u_)L70VVJGKr0> zZ+{URio9jF_I?b_2EZ}(=m(!A6J=pM!!eTzlOKhRZ)Y$!QL$}jzr{HYYU!mW?xo)3 z#L_0=xGGawxDegWGK(`dfGc51=o|B_7+z>5=;iQ>$JAaB=MUFEduMUQ&t1F$;_?N) zEUqZD4m6{qf%fwz>e#7Cd3UY4vQfB>p6~E3f)2vLWmwn!#?%16=|oM!-sF{$jOrBA zs7aueq$@0rGp)+XOV_S)x$gJlH7!ucI&rYM2tB2GCp}-H9>FGtH^)Dr;21^yl@Fj)bYE@9mhaGzqz^>T(? zvCR}VtQ#$GlBm|F+AfaU#2I z!^SMmxnIrwTF-?FfkfXhJL+$}5Hv)$JX!4aq+__7Z+@iNhmj{&XPsg|SA>G!iBGl` z00A87`$3+B)iMAE`HZ9rLJym^!OnM`+@bLXcHuknzEkfHm>#WH(VDYU?NBd} zI|*Tz{G&%Pa!{S|PlKQy4T>6fIU=*(4vrQB_v#7GHA?AgU1U9X0Vy^*#qCJhjlvfj z)G7d5ZXo-dS10T;nh3_I9D537iTLCDs^guv3g0jHVe)Dz@SB z_bZYxOkHCCwnV8TH+b3?mvXdU;&SBxawmfhtOF#v0~-KKlw%W@{0{LX=1iUDJ}Z+7 zchugJrAKCLhGbgSR+Q71f_HBx*!L=e0ia+Ika0?!M1%3dO41y(DXd2l{9H8%n-{HH zK}VHhbSJQ*d5)R*FQ@8CVs!^11j(i%Zs8jzm5$Mk5xQpl zQKmmpOE)Zt;W%vh2s;#z)}1aTT3Z#z*}_OJCh7(a9cN$nxNP~-Oie7&`NW8U9Aib; z9neaRE(3DK-RY}5C?Fh_+uN!HOQbXB0;naS;`zQ62nvINeIMMvWvu1RN2{*}XP7K@ zT2hm@R9RUID5+^vn=FU1EX#;>j-=G23JVq%@M13z7VUF`73rZY$KUC!-GlrjkpR}* zXZ-z~J$>Gf4?oZMU#Fr7{Jv)@R|I-|ojqNjAI`ESZoD#Os(=b*gHqUv87{$+E^DCe zpjYXzUWv@OB0D&tnEO{7{l2UlD>N9Y|5sE+Td~zu5wtvBVN*ISHe91FgK^SZhD-qU zlh}#U&?7-Gy2b8A>I3#8hZ-H^u+xBd#H~H@qn|u~a|fPLT;YhtA~ko>$WH~RP1eY5 zE}0bJr-otLszVI&0{vN(NSm37wkP{g{z|T9jajbp>egAb-C@3JGN2(*I7wm()z~kD|?CA|D4Swd=U>*CuHsFxK zJ?r{qXWzzIeZVb?b`FMg-FUcyGMA8$^HuOl+((U0#9pSw$l7axekSihs<|2Br!ZgX z-85{M*aWA6l*%goYqrF)X=7ZfZ-!I*WW*Da73d~EGA1qhT0Tt|$EO-JocYb3hL_oQ z9*uvN3~Lwz0=9I%nl7WoAnpIJhAEo}Z~3^(8~y!`G^;r*TcMFd@#`Cau70z!ow-AM zSFROC7MRwRKJJDM?}n@0sg{7&Ygyck+uuN!F)&zM0;+S$VomhkXv~Kx@$Wx*&K=(W z%5$Jlq9T52uj`1qFos)e{WaU8uAQ*Fc}r`o&b`F{J%TBs^&dz%bH(o7(TLg`*a|o4^({ zzpSyMnbH>Kyo^e7U9kDPj&5129)qLAs^hTA6sW*jEhvBsPC~oo($oaebqf{#p=D|h zwsso@&0nYYbQ&FFW4xhdVk!X<2l-e_9mRHJ#JC)$ZKhLEmlc6_`$Q-n9e>U3;rp2gsbDKN1sv+e? zNBFW(X%LP>+K$(X8lWy9PdJ1`4#zeT>SmxNIKlq%qB-xd*+E#b>7EF} zhJc}A-@T2;)|aZ?@7mWwZOHtv55V@d-`Kam1z_*HC$)4QAc0K@XoCa%?)0}IQw;sx zj_lWjo}jw!Fms^B8iO^KVDAQ7z&IcU^EU&G=y$jNS*3OPU+Psc%M;Ib#+RI#1i^?y zFtiuCZ=tQ_hSZnF#2|YVVq4q9or*sD&IHdoj#>2e=p?4D!^PE8n$Ffti2$to8_UGHGU9GJ*1`>6(I$-z{ z!1ecbg75du4ellXe+SG2(?pc9{%^a0aB6JL7@DNdbyrjndQhS$hCYc&2jn*Y*n$|E zzZak_+~NH&&XgV1VsP3OvRcd5gY&bH10`m^mckj@ZuFk6cq^Op-fK>~Q}pKES@ryhVkQVKw9*0p!FWniT^s8{s_%`x>%WBnE>3Qb_g+Bl z!C5{__6aEpH0F>`!3K2XoT2nUz_3a3{vISR`Q!^XF$P0c31NZ+q9}OGfGME|33gm- zAoI~+R#MXc!Fb843-9l!sLCkbz$SO* zr9p-n21P-Z<2RGcm)%;yod?Js3%=J%ec55YZ;3Bc4o3x0?A^U^t3RS{4gdcbe#Gjq z)->IlA0FyD(n;(7qE)gTeH(B>F~Xpq_o_6zDW3HGa(X+u1>oWN0rAbecq}Y$Pg$gd z@g(UAcg-hQJAY&o3Q0v!vcX$9QLJqIx+xn_kR=)5GHm{j!|#xa{IElo%o9>^R&fC` z zUiL`|H7YQ4xC?2ejYH;mayH5XOtwN=U5+=2fuB0kNTWp^mv5d-?=yesdx9iy(p!A} zHAP~fGhP6I6`w5E-Pe~-);Ki;OnE0ix`^1ey8bEbhrIXs%Co6H&82mfK=00_+}*RO zA|1!Ho_cCv{6PJcp^*z^3NImM(_7GQ-8;Uo#5}B!Wg1b@Q#4EWD?z;e($6yphv{5{j7|F19!A zMDyw6M*8&iGi%NDzf(wB*97cbBK-&kI+7*Lgvbb@NloUWcnG}bczF!)|A0H@8ir5h z1vq|84uf>d>9;fAelBE81ZX5^2!JA-$C7u)#@~855e(+W!l8Gp6%w3vtFRYr-FxL~ca;?GP<` z{*Ub@n^I;CcY=_}J6Uk4RvG9++9Ym{i|$5MzkTr2;pc{*?7gw@0T_UQ0D$YBt_PrH HQK0_^LoHic literal 0 HcmV?d00001 From 6ec5ec206b587b53c5204b2b1e74510cd7a5285c Mon Sep 17 00:00:00 2001 From: Roi Glinik Date: Wed, 26 Jul 2023 17:02:28 +0300 Subject: [PATCH 06/36] add dropdown for prom crd error --- docs/help.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/help.rst b/docs/help.rst index d30a212b7..b5bf4de8a 100644 --- a/docs/help.rst +++ b/docs/help.rst @@ -70,6 +70,13 @@ contact support@robusta.dev or go to `our slack channel Date: Wed, 20 Sep 2023 15:40:36 +0530 Subject: [PATCH 07/36] Main page with sub pages but slow --- .python-version | 1 + scripts/main_app.py | 11 +++++++ scripts/pages/demo_playbooks.py | 41 +++++++++++++++++++++++++ scripts/{ => pages}/playbook_builder.py | 34 ++++++++++---------- streamlit.Dockerfile | 25 +++++++++++++++ 5 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 .python-version create mode 100644 scripts/main_app.py create mode 100644 scripts/pages/demo_playbooks.py rename scripts/{ => pages}/playbook_builder.py (79%) create mode 100644 streamlit.Dockerfile diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..c8cfe3959 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.10 diff --git a/scripts/main_app.py b/scripts/main_app.py new file mode 100644 index 000000000..eeaedbb2a --- /dev/null +++ b/scripts/main_app.py @@ -0,0 +1,11 @@ +# import streamlit as st +# from pages import demo_playbooks, playbook_builder + +# if "current_page" not in st.session_state: +# st.session_state.current_page = "demo_playbooks" + +# if st.session_state.current_page == "demo_playbooks": +# demo_playbooks.display_demo_playbook() + +# elif st.session_state.current_page == "playbook_builder": +# playbook_builder.display_playbook_builder() diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py new file mode 100644 index 000000000..b7ebb42c1 --- /dev/null +++ b/scripts/pages/demo_playbooks.py @@ -0,0 +1,41 @@ +import streamlit as st +from streamlit import session_state as ss + +st.set_page_config( + page_title="Demo Playbooks", + page_icon=":wrench:", +) + +st.title("Demo Playbooks", anchor=None) + +if "expander_state" not in st.session_state: + st.session_state.expander_state = [True, False, False, False, False] + +trigger_expander = st.expander( + ":zap: Get notified when a Helm release fails", expanded=st.session_state.expander_state[0] +) + +# if not st.session_state.trigger_name or st.session_state.actions or st.session_state.expander_state: +# st.session_state.trigger_name = "on_helm_release_fail" +# st.session_state.actions = "add_silence" +# st.session_state.expander_state = [True, False, False, False, False] + +with trigger_expander: + + st.markdown( + "on_helm_release_fail is triggered when a Helm release enters a failed state. This is a one-time trigger, meaning that it only fires once when the release fails." + ) + # st.markdown("**Trigger:** When a Prometheus alert with the name KubePodCrashLooping") + # st.markdown("**Action:** Gets the logs of the pod") + # st.markdown("**Sample Alert:**") + st.image("./docs/images/helm-release-failed.png") + + if st.button("Use Playbook", key="button1"): + # st.session_state.expander_state = [False, True, False, False, False] + ss.trigger = "on_helm_release_fail" + ss.actions = "helm_status_enricher" + st.session_state.current_page = "playbook_builder" + ss.expander_state = [False, False, False, False, True] + # st.experimental_rerun() + + # st.write(st.session_state) diff --git a/scripts/playbook_builder.py b/scripts/pages/playbook_builder.py similarity index 79% rename from scripts/playbook_builder.py rename to scripts/pages/playbook_builder.py index 77b625e88..7692a3c49 100644 --- a/scripts/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -1,20 +1,20 @@ # run with poetry run streamlit run scripts/playbook_builder.py from collections import OrderedDict -from typing import List, Optional import streamlit as st import streamlit_pydantic as sp import yaml -from pydantic import BaseModel, Field -from collections import defaultdict -from robusta.api import Action +# from robusta.api import Action from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions +# from typing import List, Optional +# from pydantic import BaseModel, Field + generator = ExamplesGenerator() triggers = generator.get_all_triggers() actions = find_playbook_actions("./playbooks/robusta_playbooks") -actions_by_name = { a.action_name : a for a in actions } +actions_by_name = {a.action_name: a for a in actions} triggers_to_actions = generator.get_triggers_to_actions(actions) st.set_page_config( @@ -39,17 +39,15 @@ action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) - # TRIGGER with trigger_expander: trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") - #st.markdown(triggers[trigger_name]["about"]) + # st.markdown(triggers[trigger_name]["about"]) if st.button("Continue", key="button1"): st.session_state.expander_state = [False, True, False, False, False] st.experimental_rerun() - # TRIGGER PARAMETER with trigger_parameter_expander: # st.header("Available Parameters") @@ -59,29 +57,31 @@ st.session_state.expander_state = [False, False, True, False, False] st.experimental_rerun() - # ACTION with action_expander: relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] action_name = st.selectbox("Choose an action", relevant_actions, key="actions") - #st.markdown(actions[action_name]["about"]) + # st.markdown(actions[action_name]["about"]) if st.button("Continue", key="button3"): st.session_state.expander_state = [False, False, False, True, False] st.experimental_rerun() - # ACTION PARAMETER with action_parameter_expander: - - action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=actions_by_name[action_name].params_type) - - if st.button("Continue", key="button4"): + action_obj = actions_by_name.get(action_name, None) + + if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): + action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) + if st.button("Continue", key="button4"): + st.session_state.expander_state = [False, False, False, False, True] + st.experimental_rerun() + else: + st.markdown("This action doesn't have any parameters") st.session_state.expander_state = [False, False, False, False, True] st.experimental_rerun() - # DISPLAY PLAYBOOK with playbook_expander: st.markdown( @@ -99,3 +99,5 @@ ) st.code(yaml.dump(playbook)) + +# st.write(st.session_state) diff --git a/streamlit.Dockerfile b/streamlit.Dockerfile new file mode 100644 index 000000000..73693b696 --- /dev/null +++ b/streamlit.Dockerfile @@ -0,0 +1,25 @@ +# Use the specific version of Python as the base image +FROM python:3.10.12 + + +RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - +RUN apt-get update \ + && apt-get install -y --no-install-recommends nodejs \ + && pip3 install --no-cache-dir --upgrade pip \ + && rm -rf /var/lib/apt/lists/* + +# Install poetry +RUN curl -sSL https://install.python-poetry.org | python3 - +RUN mv /root/.local/bin/poetry /usr/local/bin + +# Set the working directory in the Docker image +WORKDIR /robusta + +COPY . /robusta/ + +# Configure poetry and install packages +RUN poetry config virtualenvs.create false +RUN poetry install --extras "all" + +# Command to run Streamlit when the container starts +CMD ["streamlit", "run", "./scripts/main_app.py"] From edaaf7b128cc9a157d2aa9457092e053f2616e8a Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Thu, 21 Sep 2023 21:49:17 +0530 Subject: [PATCH 08/36] recurssion issue - dont use --- scripts/main_app.py | 16 +-- scripts/pages/demo_playbooks.py | 60 ++++++----- scripts/pages/playbook_builder.py | 170 +++++++++++++++--------------- 3 files changed, 125 insertions(+), 121 deletions(-) diff --git a/scripts/main_app.py b/scripts/main_app.py index eeaedbb2a..d722d4e2f 100644 --- a/scripts/main_app.py +++ b/scripts/main_app.py @@ -1,11 +1,11 @@ -# import streamlit as st -# from pages import demo_playbooks, playbook_builder +import streamlit as st +from pages import demo_playbooks, playbook_builder -# if "current_page" not in st.session_state: -# st.session_state.current_page = "demo_playbooks" +if "current_page" not in st.session_state: + st.session_state.current_page = "demo_playbooks" -# if st.session_state.current_page == "demo_playbooks": -# demo_playbooks.display_demo_playbook() +if st.session_state.current_page == "demo_playbooks": + demo_playbooks.display_demo_playbook() -# elif st.session_state.current_page == "playbook_builder": -# playbook_builder.display_playbook_builder() +elif st.session_state.current_page == "playbook_builder": + playbook_builder.display_playbook_builder() diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py index b7ebb42c1..bc69b04ec 100644 --- a/scripts/pages/demo_playbooks.py +++ b/scripts/pages/demo_playbooks.py @@ -6,36 +6,38 @@ page_icon=":wrench:", ) -st.title("Demo Playbooks", anchor=None) -if "expander_state" not in st.session_state: - st.session_state.expander_state = [True, False, False, False, False] +def display_demo_playbook(): + st.title("Demo Playbooks", anchor=None) -trigger_expander = st.expander( - ":zap: Get notified when a Helm release fails", expanded=st.session_state.expander_state[0] -) - -# if not st.session_state.trigger_name or st.session_state.actions or st.session_state.expander_state: -# st.session_state.trigger_name = "on_helm_release_fail" -# st.session_state.actions = "add_silence" -# st.session_state.expander_state = [True, False, False, False, False] + if "expander_state" not in st.session_state: + st.session_state.expander_state = [True, False, False, False, False] -with trigger_expander: - - st.markdown( - "on_helm_release_fail is triggered when a Helm release enters a failed state. This is a one-time trigger, meaning that it only fires once when the release fails." + trigger_expander = st.expander( + ":zap: Get notified when a Helm release fails", expanded=st.session_state.expander_state[0] ) - # st.markdown("**Trigger:** When a Prometheus alert with the name KubePodCrashLooping") - # st.markdown("**Action:** Gets the logs of the pod") - # st.markdown("**Sample Alert:**") - st.image("./docs/images/helm-release-failed.png") - - if st.button("Use Playbook", key="button1"): - # st.session_state.expander_state = [False, True, False, False, False] - ss.trigger = "on_helm_release_fail" - ss.actions = "helm_status_enricher" - st.session_state.current_page = "playbook_builder" - ss.expander_state = [False, False, False, False, True] - # st.experimental_rerun() - - # st.write(st.session_state) + + # if not st.session_state.trigger_name or st.session_state.actions or st.session_state.expander_state: + # st.session_state.trigger_name = "on_helm_release_fail" + # st.session_state.actions = "add_silence" + # st.session_state.expander_state = [True, False, False, False, False] + + with trigger_expander: + + st.markdown( + "on_helm_release_fail is triggered when a Helm release enters a failed state. This is a one-time trigger, meaning that it only fires once when the release fails." + ) + # st.markdown("**Trigger:** When a Prometheus alert with the name KubePodCrashLooping") + # st.markdown("**Action:** Gets the logs of the pod") + # st.markdown("**Sample Alert:**") + st.image("./docs/images/helm-release-failed.png") + + if st.button("Use Playbook", key="button1"): + # st.session_state.expander_state = [False, True, False, False, False] + ss.trigger = "on_helm_release_fail" + ss.actions = "helm_status_enricher" + st.session_state.current_page = "playbook_builder" + ss.expander_state = [False, False, False, False, True] + # st.experimental_rerun() + + # st.write(st.session_state) diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py index 7692a3c49..81b0be70b 100644 --- a/scripts/pages/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -11,93 +11,95 @@ # from typing import List, Optional # from pydantic import BaseModel, Field -generator = ExamplesGenerator() -triggers = generator.get_all_triggers() -actions = find_playbook_actions("./playbooks/robusta_playbooks") -actions_by_name = {a.action_name: a for a in actions} -triggers_to_actions = generator.get_triggers_to_actions(actions) - -st.set_page_config( - page_title="Playbook Builder", - page_icon=":wrench:", -) - -st.title(":wrench: Playbook Builder", anchor=None) - -if "expander_state" not in st.session_state: - st.session_state.expander_state = [True, False, False, False, False] - -# INITIALIZING ALL EXPANDERS -trigger_expander = st.expander( - ":zap: Trigger - A trigger is an event that starts your Playbook", expanded=st.session_state.expander_state[0] -) -trigger_parameter_expander = st.expander("Configure Trigger", expanded=st.session_state.expander_state[1]) -action_expander = st.expander( - ":boom: Action - An action is an event a Playbook performs after it starts", - expanded=st.session_state.expander_state[2], -) -action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) -playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) - -# TRIGGER -with trigger_expander: - trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") - # st.markdown(triggers[trigger_name]["about"]) - - if st.button("Continue", key="button1"): - st.session_state.expander_state = [False, True, False, False, False] - st.experimental_rerun() - -# TRIGGER PARAMETER -with trigger_parameter_expander: - # st.header("Available Parameters") - trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) - - if st.button("Continue", key="button2"): - st.session_state.expander_state = [False, False, True, False, False] - st.experimental_rerun() - -# ACTION -with action_expander: - relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] - action_name = st.selectbox("Choose an action", relevant_actions, key="actions") - - # st.markdown(actions[action_name]["about"]) - - if st.button("Continue", key="button3"): - st.session_state.expander_state = [False, False, False, True, False] - st.experimental_rerun() - -# ACTION PARAMETER -with action_parameter_expander: - action_obj = actions_by_name.get(action_name, None) - - if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): - action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) - if st.button("Continue", key="button4"): - st.session_state.expander_state = [False, False, False, False, True] - st.experimental_rerun() - else: - st.markdown("This action doesn't have any parameters") - st.session_state.expander_state = [False, False, False, False, True] - st.experimental_rerun() - -# DISPLAY PLAYBOOK -with playbook_expander: - st.markdown( - "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" + +def display_playbook_builder(): + generator = ExamplesGenerator() + triggers = generator.get_all_triggers() + actions = find_playbook_actions("./playbooks/robusta_playbooks") + actions_by_name = {a.action_name: a for a in actions} + triggers_to_actions = generator.get_triggers_to_actions(actions) + + st.set_page_config( + page_title="Playbook Builder", + page_icon=":wrench:", ) - playbook = { - "customPlaybooks": [ - OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])]) - ] - } + st.title(":wrench: Playbook Builder", anchor=None) + + if "expander_state" not in st.session_state: + st.session_state.expander_state = [True, False, False, False, False] - yaml.add_representer( - OrderedDict, lambda dumper, data: dumper.represent_mapping("tag:yaml.org,2002:map", data.items()) + # INITIALIZING ALL EXPANDERS + trigger_expander = st.expander( + ":zap: Trigger - A trigger is an event that starts your Playbook", expanded=st.session_state.expander_state[0] + ) + trigger_parameter_expander = st.expander("Configure Trigger", expanded=st.session_state.expander_state[1]) + action_expander = st.expander( + ":boom: Action - An action is an event a Playbook performs after it starts", + expanded=st.session_state.expander_state[2], ) + action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) + playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) + + # TRIGGER + with trigger_expander: + trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") + # st.markdown(triggers[trigger_name]["about"]) + + if st.button("Continue", key="button1"): + st.session_state.expander_state = [False, True, False, False, False] + st.experimental_rerun() + + # TRIGGER PARAMETER + with trigger_parameter_expander: + # st.header("Available Parameters") + trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) + + if st.button("Continue", key="button2"): + st.session_state.expander_state = [False, False, True, False, False] + st.experimental_rerun() + + # ACTION + with action_expander: + relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] + action_name = st.selectbox("Choose an action", relevant_actions, key="actions") + + # st.markdown(actions[action_name]["about"]) + + if st.button("Continue", key="button3"): + st.session_state.expander_state = [False, False, False, True, False] + st.experimental_rerun() + + # ACTION PARAMETER + with action_parameter_expander: + action_obj = actions_by_name.get(action_name, None) + + if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): + action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) + if st.button("Continue", key="button4"): + st.session_state.expander_state = [False, False, False, False, True] + st.experimental_rerun() + else: + st.markdown("This action doesn't have any parameters") + st.session_state.expander_state = [False, False, False, False, True] + st.experimental_rerun() + + # DISPLAY PLAYBOOK + with playbook_expander: + st.markdown( + "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" + ) + + playbook = { + "customPlaybooks": [ + OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])]) + ] + } + + yaml.add_representer( + OrderedDict, lambda dumper, data: dumper.represent_mapping("tag:yaml.org,2002:map", data.items()) + ) - st.code(yaml.dump(playbook)) + st.code(yaml.dump(playbook)) -# st.write(st.session_state) + # st.write(st.session_state) From 37a0269f3192e8c921d6266b388f28e4a1e212e3 Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Tue, 17 Oct 2023 17:56:55 +0530 Subject: [PATCH 09/36] Working navigation between pages --- scripts/main_app.py | 12 +++++- scripts/pages/demo_playbooks.py | 51 +++++++++++++++++--------- scripts/pages/playbook_builder.py | 61 +++++++++++++++++++++---------- 3 files changed, 86 insertions(+), 38 deletions(-) diff --git a/scripts/main_app.py b/scripts/main_app.py index d722d4e2f..754fa65bb 100644 --- a/scripts/main_app.py +++ b/scripts/main_app.py @@ -1,11 +1,19 @@ import streamlit as st from pages import demo_playbooks, playbook_builder +from streamlit import session_state as ss if "current_page" not in st.session_state: - st.session_state.current_page = "demo_playbooks" + st.session_state["current_page"] = "demo_playbooks" -if st.session_state.current_page == "demo_playbooks": +if "playbook_choosen" not in st.session_state: + ss.playbook_choosen = False + +if st.session_state.current_page == "demo_playbooks" and not ss.playbook_choosen: + print("Demo PlayBooks") demo_playbooks.display_demo_playbook() elif st.session_state.current_page == "playbook_builder": + print(st.session_state) + print("DemoBuilder") playbook_builder.display_playbook_builder() + # st.experimental_rerun() diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py index bc69b04ec..d58bf042b 100644 --- a/scripts/pages/demo_playbooks.py +++ b/scripts/pages/demo_playbooks.py @@ -1,28 +1,46 @@ import streamlit as st from streamlit import session_state as ss -st.set_page_config( - page_title="Demo Playbooks", - page_icon=":wrench:", -) + +def set_playbook_options(): + print("PLAYBOOK OPTIONS SET") + print(ss) + ss.trigger = "on_helm_release_fail" + ss.actions = "helm_status_enricher" + ss.current_page = "playbook_builder" + ss.expander_state = [False, False, False, False, True] + ss.playbook_choosen = True def display_demo_playbook(): + + st.set_page_config( + page_title="Demo Playbooks", + page_icon=":wrench:", + ) + print("Demo Playbook Running") st.title("Demo Playbooks", anchor=None) if "expander_state" not in st.session_state: - st.session_state.expander_state = [True, False, False, False, False] + ss.expander_state = [True, False, False, False, False] - trigger_expander = st.expander( + if "triggers" not in ss: + ss.triggers = "" + if "actions" not in ss: + ss.actions = "" + playbook_expander = st.expander( ":zap: Get notified when a Helm release fails", expanded=st.session_state.expander_state[0] ) + # if "button_clicked" not in st.session_state: + # st.session_state.button_clicked = False + # if not st.session_state.trigger_name or st.session_state.actions or st.session_state.expander_state: # st.session_state.trigger_name = "on_helm_release_fail" # st.session_state.actions = "add_silence" # st.session_state.expander_state = [True, False, False, False, False] - with trigger_expander: + with playbook_expander: st.markdown( "on_helm_release_fail is triggered when a Helm release enters a failed state. This is a one-time trigger, meaning that it only fires once when the release fails." @@ -31,13 +49,12 @@ def display_demo_playbook(): # st.markdown("**Action:** Gets the logs of the pod") # st.markdown("**Sample Alert:**") st.image("./docs/images/helm-release-failed.png") - - if st.button("Use Playbook", key="button1"): - # st.session_state.expander_state = [False, True, False, False, False] - ss.trigger = "on_helm_release_fail" - ss.actions = "helm_status_enricher" - st.session_state.current_page = "playbook_builder" - ss.expander_state = [False, False, False, False, True] - # st.experimental_rerun() - - # st.write(st.session_state) + st.button("Use Playbook", key="buttondemo", on_click=set_playbook_options) + # if st.button("Use Playbook", key="buttondemo"): + # ss.trigger = "on_helm_release_fail" + # ss.actions = "helm_status_enricher" + # ss.current_page = "playbook_builder" + # ss.expander_state = [False, False, False, False, True] + # ss.playbook_choosen = True + # print(st.session_state) + # st.experimental_rerun() diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py index 81b0be70b..9614d7f15 100644 --- a/scripts/pages/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -8,24 +8,30 @@ # from robusta.api import Action from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions +# from streamlit import session_state as ss + + # from typing import List, Optional # from pydantic import BaseModel, Field +generator = ExamplesGenerator() +triggers = generator.get_all_triggers() +actions = find_playbook_actions("./playbooks/robusta_playbooks") +actions_by_name = {a.action_name: a for a in actions} +triggers_to_actions = generator.get_triggers_to_actions(actions) def display_playbook_builder(): - generator = ExamplesGenerator() - triggers = generator.get_all_triggers() - actions = find_playbook_actions("./playbooks/robusta_playbooks") - actions_by_name = {a.action_name: a for a in actions} - triggers_to_actions = generator.get_triggers_to_actions(actions) - - st.set_page_config( - page_title="Playbook Builder", - page_icon=":wrench:", - ) - st.title(":wrench: Playbook Builder", anchor=None) + # if "current_page" not in st.session_state: + # st.session_state.current_page = "playbook_builder" + + # if ss.get('button_clicked', False): # If button was clicked + # ss.button_clicked = False # Reset the flag + # if "buttondemo" in st.session_state: + # st.session_state.buttondemo = False + st.title(":wrench: Playbook Builder", anchor=None) + print("TITLE IS HERE") if "expander_state" not in st.session_state: st.session_state.expander_state = [True, False, False, False, False] @@ -41,8 +47,12 @@ def display_playbook_builder(): action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) + print("PLAYBOOK BUILDER POST EXPANDERS") + # TRIGGER with trigger_expander: + print("TRIGGERS") + trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") # st.markdown(triggers[trigger_name]["about"]) @@ -52,6 +62,7 @@ def display_playbook_builder(): # TRIGGER PARAMETER with trigger_parameter_expander: + print("TRIGGER PARAMETERS") # st.header("Available Parameters") trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) @@ -61,6 +72,7 @@ def display_playbook_builder(): # ACTION with action_expander: + print("DEMO ACTIONS") relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] action_name = st.selectbox("Choose an action", relevant_actions, key="actions") @@ -82,24 +94,35 @@ def display_playbook_builder(): else: st.markdown("This action doesn't have any parameters") st.session_state.expander_state = [False, False, False, False, True] - st.experimental_rerun() + action_data = None + # st.experimental_rerun() <----------------------------BUG # DISPLAY PLAYBOOK with playbook_expander: + print("Display Playbooks") + st.markdown( "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" ) - playbook = { - "customPlaybooks": [ - OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])]) - ] - } + if action_data is None: + playbook = { + "customPlaybooks": [ + OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: {}}])]) + ] + } + else: + playbook = { + "customPlaybooks": [ + OrderedDict( + [("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])] + ) + ] + } yaml.add_representer( OrderedDict, lambda dumper, data: dumper.represent_mapping("tag:yaml.org,2002:map", data.items()) ) st.code(yaml.dump(playbook)) - - # st.write(st.session_state) + # st.experimental_rerun() From b55102c4dc437a9b1e7ba3f4b7a397e687683e9d Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Thu, 26 Oct 2023 15:48:34 +0530 Subject: [PATCH 10/36] Added new predefined playbooks --- docs/images/deployment-image-change.png | Bin 0 -> 27812 bytes scripts/main_app.py | 4 -- scripts/pages/demo_playbooks.py | 69 +++++++++++++----------- scripts/pages/playbook_builder.py | 21 +------- 4 files changed, 40 insertions(+), 54 deletions(-) create mode 100644 docs/images/deployment-image-change.png diff --git a/docs/images/deployment-image-change.png b/docs/images/deployment-image-change.png new file mode 100644 index 0000000000000000000000000000000000000000..20a12f871d6832f1201c9e49dddfe3210d99e079 GIT binary patch literal 27812 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 Date: Fri, 27 Oct 2023 12:49:41 +0530 Subject: [PATCH 11/36] Fixed ingress playbook --- docs/images/ingress-image-change.png | Bin 0 -> 32930 bytes scripts/pages/demo_playbooks.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/images/ingress-image-change.png diff --git a/docs/images/ingress-image-change.png b/docs/images/ingress-image-change.png new file mode 100644 index 0000000000000000000000000000000000000000..fefa6b9a62a85d353d232b14ccb78ab05d56e5d2 GIT binary patch literal 32930 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 DuC~a? literal 0 HcmV?d00001 diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py index 171e04e7c..5cd81dacf 100644 --- a/scripts/pages/demo_playbooks.py +++ b/scripts/pages/demo_playbooks.py @@ -63,5 +63,5 @@ def display_demo_playbook(): st.markdown( "on_ingress_all_changes is triggered for every change in an ingress. The resource_babysitter action sends you the changed field and details of what changed." ) - st.image("./docs/images/deployment-image-change.png") + st.image("./docs/images/ingress-image-change.png") st.button("Use Playbook", key="but_ingress_change", on_click=ingress_change_options) From b595e09dd60f18b04f7a668b5b6f6bb435e72a0b Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Fri, 27 Oct 2023 10:36:14 +0300 Subject: [PATCH 12/36] Update poetry.lock --- poetry.lock | 2793 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 1673 insertions(+), 1120 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0304f3422..c9f458da8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "absolufy-imports" version = "0.3.1" description = "A tool to automatically replace relative imports with absolute ones." +category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -15,6 +16,7 @@ files = [ name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -22,31 +24,58 @@ files = [ {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, ] +[[package]] +name = "altair" +version = "5.1.2" +description = "Vega-Altair: A declarative statistical visualization library for Python." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "altair-5.1.2-py3-none-any.whl", hash = "sha256:7219708ec33c152e53145485040f428954ed15fd09b2a2d89e543e6d111dae7f"}, + {file = "altair-5.1.2.tar.gz", hash = "sha256:e5f52a71853a607c61ce93ad4a414b3d486cd0d46ac597a24ae8bd1ac99dd460"}, +] + +[package.dependencies] +jinja2 = "*" +jsonschema = ">=3.0" +numpy = "*" +packaging = "*" +pandas = ">=0.25" +toolz = "*" +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["anywidget", "black (<24)", "hatch", "ipython", "m2r", "mypy", "pandas-stubs", "pyarrow (>=11)", "pytest", "pytest-cov", "ruff", "types-jsonschema", "types-setuptools", "vega-datasets", "vegafusion[embed] (>=1.4.0)", "vl-convert-python (>=0.14.0)"] +doc = ["docutils", "geopandas", "jinja2", "myst-parser", "numpydoc", "pillow (>=9,<10)", "pydata-sphinx-theme", "scipy", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinxext-altair"] + [[package]] name = "anyio" -version = "3.7.1" +version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, + {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.22)"] [[package]] name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = "*" files = [ @@ -58,6 +87,7 @@ files = [ name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -68,6 +98,7 @@ files = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -84,50 +115,27 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "babel" -version = "2.12.1" +version = "2.13.1" description = "Internationalization utilities" +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, + {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, ] [package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - -[[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -optional = false -python-versions = ">=3.6" -files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] +setuptools = {version = "*", markers = "python_version >= \"3.12\""} [package.extras] -tzdata = ["tzdata"] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "better-exceptions" version = "0.3.3" description = "Pretty and helpful exceptions, automatically" +category = "main" optional = true python-versions = "*" files = [ @@ -142,6 +150,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} name = "bitmath" version = "1.3.3.1" description = "Pythonic module for representing and manipulating file sizes with different prefix notations (file size unit conversion)" +category = "main" optional = false python-versions = "*" files = [ @@ -152,6 +161,7 @@ files = [ name = "black" version = "22.3.0" description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.6.2" files = [ @@ -186,7 +196,6 @@ mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -195,81 +204,79 @@ jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] -name = "bleach" -version = "6.0.0" -description = "An easy safelist-based HTML-sanitizing tool." -optional = true +name = "blinker" +version = "1.6.3" +description = "Fast, simple object-to-object and broadcast signaling" +category = "dev" +optional = false python-versions = ">=3.7" files = [ - {file = "bleach-6.0.0-py3-none-any.whl", hash = "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4"}, - {file = "bleach-6.0.0.tar.gz", hash = "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414"}, + {file = "blinker-1.6.3-py3-none-any.whl", hash = "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa"}, + {file = "blinker-1.6.3.tar.gz", hash = "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d"}, ] -[package.dependencies] -six = ">=1.9.0" -webencodings = "*" - -[package.extras] -css = ["tinycss2 (>=1.1.0,<1.2)"] - [[package]] name = "boto3" -version = "1.28.17" +version = "1.28.72" description = "The AWS SDK for Python" +category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.17-py3-none-any.whl", hash = "sha256:bca0526f819e0f19c0f1e6eba3e2d1d6b6a92a45129f98c0d716e5aab6d9444b"}, - {file = "boto3-1.28.17.tar.gz", hash = "sha256:90f7cfb5e1821af95b1fc084bc50e6c47fa3edc99f32de1a2591faa0c546bea7"}, + {file = "boto3-1.28.72-py3-none-any.whl", hash = "sha256:73e2b56dcbe1b856274185c908dcb5973b007d62c74b646e6bd2ac09a303983a"}, + {file = "boto3-1.28.72.tar.gz", hash = "sha256:cc7d939cdbb4ad3980274c96c589e95f028f740ac49a3547c8f4aaec6a7a6409"}, ] [package.dependencies] -botocore = ">=1.31.17,<1.32.0" +botocore = ">=1.31.72,<1.32.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.6.0,<0.7.0" +s3transfer = ">=0.7.0,<0.8.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.21" +version = "1.31.72" description = "Low-level, data-driven core of boto 3." +category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.21-py3-none-any.whl", hash = "sha256:c20a5c46eaf49b18b76fdfaec5583320e18abd551b1bc3cd7b1e718372675e21"}, - {file = "botocore-1.31.21.tar.gz", hash = "sha256:9a13736b16aea3f16829b00edfb2c656fee72ecbfe5eb396cc2f8632e31fd524"}, + {file = "botocore-1.31.72-py3-none-any.whl", hash = "sha256:1a0f5063a9a5e1ef40907c67778625cf14a8c47c8e09cd2b3f9dc53a8adb52cf"}, + {file = "botocore-1.31.72.tar.gz", hash = "sha256:37763f40c2fcc48114015fe43bbd75ec1aabef48b418e1a5e28cb1c350967260"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" -urllib3 = ">=1.25.4,<1.27" +urllib3 = {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""} [package.extras] crt = ["awscrt (==0.16.26)"] [[package]] name = "cachetools" -version = "5.3.1" +version = "5.3.2" description = "Extensible memoizing collections and decorators" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, - {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, + {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, + {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, ] [[package]] name = "cairocffi" -version = "1.6.0" +version = "1.6.1" description = "cffi-based cairo bindings for Python" +category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "cairocffi-1.6.0-py3-none-any.whl", hash = "sha256:fec979f3e904c1a38350b06dcc91d3c15f9a4954e618a068761622e3a0d5058c"}, - {file = "cairocffi-1.6.0.tar.gz", hash = "sha256:e7f21ea1546a5d490ceba77b6216c1393d7e0a7856e292864a88a7506092bf4d"}, + {file = "cairocffi-1.6.1-py3-none-any.whl", hash = "sha256:aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e"}, + {file = "cairocffi-1.6.1.tar.gz", hash = "sha256:78e6bbe47357640c453d0be929fa49cd05cce2e1286f3d2a1ca9cbda7efdb8b7"}, ] [package.dependencies] @@ -282,13 +289,14 @@ xcb = ["xcffib (>=1.4.0)"] [[package]] name = "cairosvg" -version = "2.7.0" +version = "2.7.1" description = "A Simple SVG Converter based on Cairo" +category = "main" optional = true python-versions = ">=3.5" files = [ - {file = "CairoSVG-2.7.0-py3-none-any.whl", hash = "sha256:17cb96423a896258848322a95c80160e714a58f1af3dd73b8e1750994519b9f9"}, - {file = "CairoSVG-2.7.0.tar.gz", hash = "sha256:ac4dc7c1d38b3a15717db2633a3a383012e0be664c727c911637e6af6a49293c"}, + {file = "CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b"}, + {file = "CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0"}, ] [package.dependencies] @@ -304,86 +312,76 @@ test = ["flake8", "isort", "pytest"] [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -391,30 +389,121 @@ pycparser = "*" [[package]] name = "cfgv" -version = "3.3.1" +version = "3.4.0" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.8" files = [ - {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, - {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] [[package]] -name = "chardet" -version = "4.0.0" -description = "Universal encoding detector for Python 2 and 3" +name = "charset-normalizer" +version = "3.3.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7.0" files = [ - {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, - {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, + {file = "charset-normalizer-3.3.1.tar.gz", hash = "sha256:d9137a876020661972ca6eec0766d81aef8a5627df628b664b234b73396e727e"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8aee051c89e13565c6bd366813c386939f8e928af93c29fda4af86d25b73d8f8"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:352a88c3df0d1fa886562384b86f9a9e27563d4704ee0e9d56ec6fcd270ea690"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:223b4d54561c01048f657fa6ce41461d5ad8ff128b9678cfe8b2ecd951e3f8a2"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f861d94c2a450b974b86093c6c027888627b8082f1299dfd5a4bae8e2292821"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1171ef1fc5ab4693c5d151ae0fdad7f7349920eabbaca6271f95969fa0756c2d"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28f512b9a33235545fbbdac6a330a510b63be278a50071a336afc1b78781b147"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0e842112fe3f1a4ffcf64b06dc4c61a88441c2f02f373367f7b4c1aa9be2ad5"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f9bc2ce123637a60ebe819f9fccc614da1bcc05798bbbaf2dd4ec91f3e08846"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f194cce575e59ffe442c10a360182a986535fd90b57f7debfaa5c845c409ecc3"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9a74041ba0bfa9bc9b9bb2cd3238a6ab3b7618e759b41bd15b5f6ad958d17605"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b578cbe580e3b41ad17b1c428f382c814b32a6ce90f2d8e39e2e635d49e498d1"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6db3cfb9b4fcecb4390db154e75b49578c87a3b9979b40cdf90d7e4b945656e1"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:debb633f3f7856f95ad957d9b9c781f8e2c6303ef21724ec94bea2ce2fcbd056"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-win32.whl", hash = "sha256:87071618d3d8ec8b186d53cb6e66955ef2a0e4fa63ccd3709c0c90ac5a43520f"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:e372d7dfd154009142631de2d316adad3cc1c36c32a38b16a4751ba78da2a397"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae4070f741f8d809075ef697877fd350ecf0b7c5837ed68738607ee0a2c572cf"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58e875eb7016fd014c0eea46c6fa92b87b62c0cb31b9feae25cbbe62c919f54d"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dbd95e300367aa0827496fe75a1766d198d34385a58f97683fe6e07f89ca3e3c"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de0b4caa1c8a21394e8ce971997614a17648f94e1cd0640fbd6b4d14cab13a72"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:985c7965f62f6f32bf432e2681173db41336a9c2611693247069288bcb0c7f8b"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a15c1fe6d26e83fd2e5972425a772cca158eae58b05d4a25a4e474c221053e2d"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae55d592b02c4349525b6ed8f74c692509e5adffa842e582c0f861751701a673"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be4d9c2770044a59715eb57c1144dedea7c5d5ae80c68fb9959515037cde2008"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:851cf693fb3aaef71031237cd68699dded198657ec1e76a76eb8be58c03a5d1f"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:31bbaba7218904d2eabecf4feec0d07469284e952a27400f23b6628439439fa7"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:871d045d6ccc181fd863a3cd66ee8e395523ebfbc57f85f91f035f50cee8e3d4"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:501adc5eb6cd5f40a6f77fbd90e5ab915c8fd6e8c614af2db5561e16c600d6f3"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f5fb672c396d826ca16a022ac04c9dce74e00a1c344f6ad1a0fdc1ba1f332213"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-win32.whl", hash = "sha256:bb06098d019766ca16fc915ecaa455c1f1cd594204e7f840cd6258237b5079a8"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:8af5a8917b8af42295e86b64903156b4f110a30dca5f3b5aedea123fbd638bff"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7ae8e5142dcc7a49168f4055255dbcced01dc1714a90a21f87448dc8d90617d1"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5b70bab78accbc672f50e878a5b73ca692f45f5b5e25c8066d748c09405e6a55"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ceca5876032362ae73b83347be8b5dbd2d1faf3358deb38c9c88776779b2e2f"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34d95638ff3613849f473afc33f65c401a89f3b9528d0d213c7037c398a51296"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edbe6a5bf8b56a4a84533ba2b2f489d0046e755c29616ef8830f9e7d9cf5728"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10b8dd31e10f32410751b3430996f9807fc4d1587ca69772e2aa940a82ab571a"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edc0202099ea1d82844316604e17d2b175044f9bcb6b398aab781eba957224bd"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b891a2f68e09c5ef989007fac11476ed33c5c9994449a4e2c3386529d703dc8b"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:71ef3b9be10070360f289aea4838c784f8b851be3ba58cf796262b57775c2f14"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:55602981b2dbf8184c098bc10287e8c245e351cd4fdcad050bd7199d5a8bf514"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:46fb9970aa5eeca547d7aa0de5d4b124a288b42eaefac677bde805013c95725c"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:520b7a142d2524f999447b3a0cf95115df81c4f33003c51a6ab637cbda9d0bf4"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-win32.whl", hash = "sha256:8ec8ef42c6cd5856a7613dcd1eaf21e5573b2185263d87d27c8edcae33b62a61"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:baec8148d6b8bd5cee1ae138ba658c71f5b03e0d69d5907703e3e1df96db5e41"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63a6f59e2d01310f754c270e4a257426fe5a591dc487f1983b3bbe793cf6bac6"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d6bfc32a68bc0933819cfdfe45f9abc3cae3877e1d90aac7259d57e6e0f85b1"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f3100d86dcd03c03f7e9c3fdb23d92e32abbca07e7c13ebd7ddfbcb06f5991f"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39b70a6f88eebe239fa775190796d55a33cfb6d36b9ffdd37843f7c4c1b5dc67"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e12f8ee80aa35e746230a2af83e81bd6b52daa92a8afaef4fea4a2ce9b9f4fa"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b6cefa579e1237ce198619b76eaa148b71894fb0d6bcf9024460f9bf30fd228"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:61f1e3fb621f5420523abb71f5771a204b33c21d31e7d9d86881b2cffe92c47c"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4f6e2a839f83a6a76854d12dbebde50e4b1afa63e27761549d006fa53e9aa80e"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:1ec937546cad86d0dce5396748bf392bb7b62a9eeb8c66efac60e947697f0e58"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:82ca51ff0fc5b641a2d4e1cc8c5ff108699b7a56d7f3ad6f6da9dbb6f0145b48"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:633968254f8d421e70f91c6ebe71ed0ab140220469cf87a9857e21c16687c034"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-win32.whl", hash = "sha256:c0c72d34e7de5604df0fde3644cc079feee5e55464967d10b24b1de268deceb9"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:63accd11149c0f9a99e3bc095bbdb5a464862d77a7e309ad5938fbc8721235ae"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5a3580a4fdc4ac05f9e53c57f965e3594b2f99796231380adb2baaab96e22761"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2465aa50c9299d615d757c1c888bc6fef384b7c4aec81c05a0172b4400f98557"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb7cd68814308aade9d0c93c5bd2ade9f9441666f8ba5aa9c2d4b389cb5e2a45"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e43805ccafa0a91831f9cd5443aa34528c0c3f2cc48c4cb3d9a7721053874b"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:854cc74367180beb327ab9d00f964f6d91da06450b0855cbbb09187bcdb02de5"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c15070ebf11b8b7fd1bfff7217e9324963c82dbdf6182ff7050519e350e7ad9f"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4c99f98fc3a1835af8179dcc9013f93594d0670e2fa80c83aa36346ee763d2"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fb765362688821404ad6cf86772fc54993ec11577cd5a92ac44b4c2ba52155b"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dced27917823df984fe0c80a5c4ad75cf58df0fbfae890bc08004cd3888922a2"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a66bcdf19c1a523e41b8e9d53d0cedbfbac2e93c649a2e9502cb26c014d0980c"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ecd26be9f112c4f96718290c10f4caea6cc798459a3a76636b817a0ed7874e42"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f70fd716855cd3b855316b226a1ac8bdb3caf4f7ea96edcccc6f484217c9597"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:17a866d61259c7de1bdadef418a37755050ddb4b922df8b356503234fff7932c"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-win32.whl", hash = "sha256:548eefad783ed787b38cb6f9a574bd8664468cc76d1538215d510a3cd41406cb"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:45f053a0ece92c734d874861ffe6e3cc92150e32136dd59ab1fb070575189c97"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bc791ec3fd0c4309a753f95bb6c749ef0d8ea3aea91f07ee1cf06b7b02118f2f"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2c092be3885a1b7899cd85ce24acedc1034199d6fca1483fa2c3a35c86e43041"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2000c54c395d9e5e44c99dc7c20a64dc371f777faf8bae4919ad3e99ce5253e"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cb50a0335382aac15c31b61d8531bc9bb657cfd848b1d7158009472189f3d62"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c30187840d36d0ba2893bc3271a36a517a717f9fd383a98e2697ee890a37c273"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0bf89afcbcf4d1bb2652f6580e5e55a840fdf87384f6063c4a4f0c95e378656"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3c66df3f41abee950d6638adc7eac4730a306b022570f71dd0bd6ba53503ab57"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd805513198304026bd379d1d516afbf6c3c13f4382134a2c526b8b854da1c2e"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:9505dc359edb6a330efcd2be825fdb73ee3e628d9010597aa1aee5aa63442e97"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:31445f38053476a0c4e6d12b047b08ced81e2c7c712e5a1ad97bc913256f91b2"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-win32.whl", hash = "sha256:bd28b31730f0e982ace8663d108e01199098432a30a4c410d06fe08fdb9e93f4"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:555fe186da0068d3354cdf4bbcbc609b0ecae4d04c921cc13e209eece7720727"}, + {file = "charset_normalizer-3.3.1-py3-none-any.whl", hash = "sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708"}, ] [[package]] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -425,24 +514,11 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -[[package]] -name = "click-log" -version = "0.4.0" -description = "Logging integration for Click" -optional = true -python-versions = "*" -files = [ - {file = "click-log-0.4.0.tar.gz", hash = "sha256:3970f8570ac54491237bcdb3d8ab5e3eef6c057df29f8c3d1151a51a9c23b975"}, - {file = "click_log-0.4.0-py2.py3-none-any.whl", hash = "sha256:a43e394b528d52112af599f2fc9e4b7cf3c15f94e53581f74fa6867e68c91756"}, -] - -[package.dependencies] -click = "*" - [[package]] name = "click-spinner" version = "0.1.10" description = "Spinner for Click" +category = "main" optional = false python-versions = "*" files = [ @@ -457,6 +533,7 @@ test = ["click", "pytest", "six"] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -468,6 +545,7 @@ files = [ name = "colorlog" version = "5.0.1" description = "Add colours to the output of Python's logging module." +category = "main" optional = false python-versions = "*" files = [ @@ -482,6 +560,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} name = "contourpy" version = "1.1.0" description = "Python library for calculating contours of 2D quadrilateral grids" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -492,6 +571,7 @@ files = [ {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37"}, {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa"}, {file = "contourpy-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa"}, + {file = "contourpy-1.1.0-cp310-cp310-win32.whl", hash = "sha256:9b2dd2ca3ac561aceef4c7c13ba654aaa404cf885b187427760d7f7d4c57cff8"}, {file = "contourpy-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2"}, {file = "contourpy-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882"}, {file = "contourpy-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545"}, @@ -500,6 +580,7 @@ files = [ {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e"}, {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a"}, {file = "contourpy-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e"}, + {file = "contourpy-1.1.0-cp311-cp311-win32.whl", hash = "sha256:edb989d31065b1acef3828a3688f88b2abb799a7db891c9e282df5ec7e46221b"}, {file = "contourpy-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256"}, {file = "contourpy-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed"}, {file = "contourpy-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae"}, @@ -508,6 +589,7 @@ files = [ {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94"}, {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f"}, {file = "contourpy-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1"}, + {file = "contourpy-1.1.0-cp38-cp38-win32.whl", hash = "sha256:108dfb5b3e731046a96c60bdc46a1a0ebee0760418951abecbe0fc07b5b93b27"}, {file = "contourpy-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4"}, {file = "contourpy-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9"}, {file = "contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a"}, @@ -516,6 +598,7 @@ files = [ {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f"}, {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a"}, {file = "contourpy-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002"}, + {file = "contourpy-1.1.0-cp39-cp39-win32.whl", hash = "sha256:71551f9520f008b2950bef5f16b0e3587506ef4f23c734b71ffb7b89f8721999"}, {file = "contourpy-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d"}, {file = "contourpy-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493"}, {file = "contourpy-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439"}, @@ -536,15 +619,88 @@ mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.2.0)", "types-Pill test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] test-no-images = ["pytest", "pytest-cov", "wurlitzer"] +[[package]] +name = "contourpy" +version = "1.1.1" +description = "Python library for calculating contours of 2D quadrilateral grids" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "contourpy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:46e24f5412c948d81736509377e255f6040e94216bf1a9b5ea1eaa9d29f6ec1b"}, + {file = "contourpy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e48694d6a9c5a26ee85b10130c77a011a4fedf50a7279fa0bdaf44bafb4299d"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66045af6cf00e19d02191ab578a50cb93b2028c3eefed999793698e9ea768ae"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ebf42695f75ee1a952f98ce9775c873e4971732a87334b099dde90b6af6a916"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6aec19457617ef468ff091669cca01fa7ea557b12b59a7908b9474bb9674cf0"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:462c59914dc6d81e0b11f37e560b8a7c2dbab6aca4f38be31519d442d6cde1a1"}, + {file = "contourpy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6d0a8efc258659edc5299f9ef32d8d81de8b53b45d67bf4bfa3067f31366764d"}, + {file = "contourpy-1.1.1-cp310-cp310-win32.whl", hash = "sha256:d6ab42f223e58b7dac1bb0af32194a7b9311065583cc75ff59dcf301afd8a431"}, + {file = "contourpy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:549174b0713d49871c6dee90a4b499d3f12f5e5f69641cd23c50a4542e2ca1eb"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:407d864db716a067cc696d61fa1ef6637fedf03606e8417fe2aeed20a061e6b2"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe80c017973e6a4c367e037cb31601044dd55e6bfacd57370674867d15a899b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e30aaf2b8a2bac57eb7e1650df1b3a4130e8d0c66fc2f861039d507a11760e1b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3de23ca4f381c3770dee6d10ead6fff524d540c0f662e763ad1530bde5112532"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:566f0e41df06dfef2431defcfaa155f0acfa1ca4acbf8fd80895b1e7e2ada40e"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04c2f0adaf255bf756cf08ebef1be132d3c7a06fe6f9877d55640c5e60c72c5"}, + {file = "contourpy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0c188ae66b772d9d61d43c6030500344c13e3f73a00d1dc241da896f379bb62"}, + {file = "contourpy-1.1.1-cp311-cp311-win32.whl", hash = "sha256:0683e1ae20dc038075d92e0e0148f09ffcefab120e57f6b4c9c0f477ec171f33"}, + {file = "contourpy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:8636cd2fc5da0fb102a2504fa2c4bea3cbc149533b345d72cdf0e7a924decc45"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:560f1d68a33e89c62da5da4077ba98137a5e4d3a271b29f2f195d0fba2adcb6a"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24216552104ae8f3b34120ef84825400b16eb6133af2e27a190fdc13529f023e"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56de98a2fb23025882a18b60c7f0ea2d2d70bbbcfcf878f9067234b1c4818442"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:07d6f11dfaf80a84c97f1a5ba50d129d9303c5b4206f776e94037332e298dda8"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1eaac5257a8f8a047248d60e8f9315c6cff58f7803971170d952555ef6344a7"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19557fa407e70f20bfaba7d55b4d97b14f9480856c4fb65812e8a05fe1c6f9bf"}, + {file = "contourpy-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:081f3c0880712e40effc5f4c3b08feca6d064cb8cfbb372ca548105b86fd6c3d"}, + {file = "contourpy-1.1.1-cp312-cp312-win32.whl", hash = "sha256:059c3d2a94b930f4dafe8105bcdc1b21de99b30b51b5bce74c753686de858cb6"}, + {file = "contourpy-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f44d78b61740e4e8c71db1cf1fd56d9050a4747681c59ec1094750a658ceb970"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8"}, + {file = "contourpy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251"}, + {file = "contourpy-1.1.1-cp38-cp38-win32.whl", hash = "sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7"}, + {file = "contourpy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ba42e3810999a0ddd0439e6e5dbf6d034055cdc72b7c5c839f37a7c274cb4eba"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c06e4c6e234fcc65435223c7b2a90f286b7f1b2733058bdf1345d218cc59e34"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6fab080484e419528e98624fb5c4282148b847e3602dc8dbe0cb0669469887"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93df44ab351119d14cd1e6b52a5063d3336f0754b72736cc63db59307dabb718"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eafbef886566dc1047d7b3d4b14db0d5b7deb99638d8e1be4e23a7c7ac59ff0f"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efe0fab26d598e1ec07d72cf03eaeeba8e42b4ecf6b9ccb5a356fde60ff08b85"}, + {file = "contourpy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f08e469821a5e4751c97fcd34bcb586bc243c39c2e39321822060ba902eac49e"}, + {file = "contourpy-1.1.1-cp39-cp39-win32.whl", hash = "sha256:bfc8a5e9238232a45ebc5cb3bfee71f1167064c8d382cadd6076f0d51cff1da0"}, + {file = "contourpy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:c84fdf3da00c2827d634de4fcf17e3e067490c4aea82833625c4c8e6cdea0887"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a75cc163a5f4531a256f2c523bd80db509a49fc23721b36dd1ef2f60ff41c3cb"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b53d5769aa1f2d4ea407c65f2d1d08002952fac1d9e9d307aa2e1023554a163"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11b836b7dbfb74e049c302bbf74b4b8f6cb9d0b6ca1bf86cfa8ba144aedadd9c"}, + {file = "contourpy-1.1.1.tar.gz", hash = "sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab"}, +] + +[package.dependencies] +numpy = {version = ">=1.16,<2.0", markers = "python_version <= \"3.11\""} + +[package.extras] +bokeh = ["bokeh", "selenium"] +docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.4.1)", "types-Pillow"] +test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] +test-no-images = ["pytest", "pytest-cov", "wurlitzer"] + [[package]] name = "croniter" -version = "1.4.0" +version = "1.4.1" description = "croniter provides iteration for datetime object with cron like format" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "croniter-1.4.0-py2.py3-none-any.whl", hash = "sha256:4cb177d0167d4a61b1aa3575fcf06b9a064e9a48a4b11d6ab474b1b9e126ed9c"}, - {file = "croniter-1.4.0.tar.gz", hash = "sha256:edf332f2ef3b2b47d4c01004c640981c5a70d8ccb6b854aea8866a28b532449a"}, + {file = "croniter-1.4.1-py2.py3-none-any.whl", hash = "sha256:9595da48af37ea06ec3a9f899738f1b2c1c13da3c38cea606ef7cd03ea421128"}, + {file = "croniter-1.4.1.tar.gz", hash = "sha256:1a6df60eacec3b7a0aa52a8f2ef251ae3dd2a7c7c8b9874e73e791636d55a361"}, ] [package.dependencies] @@ -554,6 +710,7 @@ python-dateutil = "*" name = "cryptography" version = "36.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -594,6 +751,7 @@ test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0 name = "cssselect" version = "1.2.0" description = "cssselect parses CSS3 Selectors and translates them to XPath 1.0" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -605,6 +763,7 @@ files = [ name = "cssselect2" version = "0.7.0" description = "CSS selectors for Python ElementTree" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -622,19 +781,25 @@ test = ["flake8", "isort", "pytest"] [[package]] name = "cycler" -version = "0.11.0" +version = "0.12.1" description = "Composable style cycles" +category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, + {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, + {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, ] +[package.extras] +docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] +tests = ["pytest", "pytest-cov", "pytest-xdist"] + [[package]] name = "datadog-api-client" version = "1.12" description = "Collection of all Datadog Public endpoints" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -656,6 +821,7 @@ tests = ["aiosonic", "glom", "jinja2", "mypy", "pytest", "pytest-asyncio", "pyte name = "dateparser" version = "1.1.8" description = "Date parsing library designed to parse dates from HTML pages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -678,6 +844,7 @@ langdetect = ["langdetect"] name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -689,6 +856,7 @@ files = [ name = "deprecation" version = "2.1.0" description = "A library to handle automated deprecations" +category = "main" optional = true python-versions = "*" files = [ @@ -701,19 +869,21 @@ packaging = "*" [[package]] name = "distlib" -version = "0.3.6" +version = "0.3.7" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, + {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, + {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, ] [[package]] name = "docutils" version = "0.17.1" description = "Docutils -- Python Documentation Utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -721,21 +891,11 @@ files = [ {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, ] -[[package]] -name = "dotty-dict" -version = "1.3.1" -description = "Dictionary wrapper for quick access to deeply nested keys." -optional = true -python-versions = ">=3.5,<4.0" -files = [ - {file = "dotty_dict-1.3.1-py3-none-any.whl", hash = "sha256:5022d234d9922f13aa711b4950372a06a6d64cb6d6db9ba43d0ba133ebfce31f"}, - {file = "dotty_dict-1.3.1.tar.gz", hash = "sha256:4b016e03b8ae265539757a53eba24b9bfda506fb94fbce0bee843c6f05541a15"}, -] - [[package]] name = "dpath" version = "2.1.6" description = "Filesystem-like pathing and searching for dictionaries" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -747,6 +907,7 @@ files = [ name = "dulwich" version = "0.20.28" description = "Python Git Library" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -785,13 +946,14 @@ watch = ["pyinotify"] [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -799,23 +961,26 @@ test = ["pytest (>=6)"] [[package]] name = "filelock" -version = "3.12.2" +version = "3.12.4" description = "A platform independent file lock." +category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, - {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, + {file = "filelock-3.12.4-py3-none-any.whl", hash = "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4"}, + {file = "filelock-3.12.4.tar.gz", hash = "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] +typing = ["typing-extensions (>=4.7.1)"] [[package]] name = "flask" version = "1.1.2" description = "A simple framework for building complex web applications." +category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -836,17 +1001,58 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.38.0" +version = "4.43.1" description = "Tools to manipulate font files" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "fonttools-4.38.0-py3-none-any.whl", hash = "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb"}, - {file = "fonttools-4.38.0.zip", hash = "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1"}, + {file = "fonttools-4.43.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bf11e2cca121df35e295bd34b309046c29476ee739753bc6bc9d5050de319273"}, + {file = "fonttools-4.43.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10b3922875ffcba636674f406f9ab9a559564fdbaa253d66222019d569db869c"}, + {file = "fonttools-4.43.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f727c3e3d08fd25352ed76cc3cb61486f8ed3f46109edf39e5a60fc9fecf6ca"}, + {file = "fonttools-4.43.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad0b3f6342cfa14be996971ea2b28b125ad681c6277c4cd0fbdb50340220dfb6"}, + {file = "fonttools-4.43.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3b7ad05b2beeebafb86aa01982e9768d61c2232f16470f9d0d8e385798e37184"}, + {file = "fonttools-4.43.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c54466f642d2116686268c3e5f35ebb10e49b0d48d41a847f0e171c785f7ac7"}, + {file = "fonttools-4.43.1-cp310-cp310-win32.whl", hash = "sha256:1e09da7e8519e336239fbd375156488a4c4945f11c4c5792ee086dd84f784d02"}, + {file = "fonttools-4.43.1-cp310-cp310-win_amd64.whl", hash = "sha256:1cf9e974f63b1080b1d2686180fc1fbfd3bfcfa3e1128695b5de337eb9075cef"}, + {file = "fonttools-4.43.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5db46659cfe4e321158de74c6f71617e65dc92e54980086823a207f1c1c0e24b"}, + {file = "fonttools-4.43.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1952c89a45caceedf2ab2506d9a95756e12b235c7182a7a0fff4f5e52227204f"}, + {file = "fonttools-4.43.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c36da88422e0270fbc7fd959dc9749d31a958506c1d000e16703c2fce43e3d0"}, + {file = "fonttools-4.43.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bbbf8174501285049e64d174e29f9578495e1b3b16c07c31910d55ad57683d8"}, + {file = "fonttools-4.43.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d4071bd1c183b8d0b368cc9ed3c07a0f6eb1bdfc4941c4c024c49a35429ac7cd"}, + {file = "fonttools-4.43.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d21099b411e2006d3c3e1f9aaf339e12037dbf7bf9337faf0e93ec915991f43b"}, + {file = "fonttools-4.43.1-cp311-cp311-win32.whl", hash = "sha256:b84a1c00f832feb9d0585ca8432fba104c819e42ff685fcce83537e2e7e91204"}, + {file = "fonttools-4.43.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a2f0aa6ca7c9bc1058a9d0b35483d4216e0c1bbe3962bc62ce112749954c7b8"}, + {file = "fonttools-4.43.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4d9740e3783c748521e77d3c397dc0662062c88fd93600a3c2087d3d627cd5e5"}, + {file = "fonttools-4.43.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:884ef38a5a2fd47b0c1291647b15f4e88b9de5338ffa24ee52c77d52b4dfd09c"}, + {file = "fonttools-4.43.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9648518ef687ba818db3fcc5d9aae27a369253ac09a81ed25c3867e8657a0680"}, + {file = "fonttools-4.43.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95e974d70238fc2be5f444fa91f6347191d0e914d5d8ae002c9aa189572cc215"}, + {file = "fonttools-4.43.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:34f713dad41aa21c637b4e04fe507c36b986a40f7179dcc86402237e2d39dcd3"}, + {file = "fonttools-4.43.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:360201d46165fc0753229afe785900bc9596ee6974833124f4e5e9f98d0f592b"}, + {file = "fonttools-4.43.1-cp312-cp312-win32.whl", hash = "sha256:bb6d2f8ef81ea076877d76acfb6f9534a9c5f31dc94ba70ad001267ac3a8e56f"}, + {file = "fonttools-4.43.1-cp312-cp312-win_amd64.whl", hash = "sha256:25d3da8a01442cbc1106490eddb6d31d7dffb38c1edbfabbcc8db371b3386d72"}, + {file = "fonttools-4.43.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8da417431bfc9885a505e86ba706f03f598c85f5a9c54f67d63e84b9948ce590"}, + {file = "fonttools-4.43.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:51669b60ee2a4ad6c7fc17539a43ffffc8ef69fd5dbed186a38a79c0ac1f5db7"}, + {file = "fonttools-4.43.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748015d6f28f704e7d95cd3c808b483c5fb87fd3eefe172a9da54746ad56bfb6"}, + {file = "fonttools-4.43.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7a58eb5e736d7cf198eee94844b81c9573102ae5989ebcaa1d1a37acd04b33d"}, + {file = "fonttools-4.43.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6bb5ea9076e0e39defa2c325fc086593ae582088e91c0746bee7a5a197be3da0"}, + {file = "fonttools-4.43.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5f37e31291bf99a63328668bb83b0669f2688f329c4c0d80643acee6e63cd933"}, + {file = "fonttools-4.43.1-cp38-cp38-win32.whl", hash = "sha256:9c60ecfa62839f7184f741d0509b5c039d391c3aff71dc5bc57b87cc305cff3b"}, + {file = "fonttools-4.43.1-cp38-cp38-win_amd64.whl", hash = "sha256:fe9b1ec799b6086460a7480e0f55c447b1aca0a4eecc53e444f639e967348896"}, + {file = "fonttools-4.43.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13a9a185259ed144def3682f74fdcf6596f2294e56fe62dfd2be736674500dba"}, + {file = "fonttools-4.43.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2adca1b46d69dce4a37eecc096fe01a65d81a2f5c13b25ad54d5430ae430b13"}, + {file = "fonttools-4.43.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18eefac1b247049a3a44bcd6e8c8fd8b97f3cad6f728173b5d81dced12d6c477"}, + {file = "fonttools-4.43.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2062542a7565091cea4cc14dd99feff473268b5b8afdee564f7067dd9fff5860"}, + {file = "fonttools-4.43.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18a2477c62a728f4d6e88c45ee9ee0229405e7267d7d79ce1f5ce0f3e9f8ab86"}, + {file = "fonttools-4.43.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a7a06f8d95b7496e53af80d974d63516ffb263a468e614978f3899a6df52d4b3"}, + {file = "fonttools-4.43.1-cp39-cp39-win32.whl", hash = "sha256:10003ebd81fec0192c889e63a9c8c63f88c7d72ae0460b7ba0cd2a1db246e5ad"}, + {file = "fonttools-4.43.1-cp39-cp39-win_amd64.whl", hash = "sha256:e117a92b07407a061cde48158c03587ab97e74e7d73cb65e6aadb17af191162a"}, + {file = "fonttools-4.43.1-py3-none-any.whl", hash = "sha256:4f88cae635bfe4bbbdc29d479a297bb525a94889184bb69fa9560c2d4834ddb9"}, + {file = "fonttools-4.43.1.tar.gz", hash = "sha256:17dbc2eeafb38d5d0e865dcce16e313c58265a6d2d20081c435f84dc5a9d8212"}, ] [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 (>=14.0.0)", "xattr", "zopfli (>=0.1.4)"] +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.0.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] interpolatable = ["munkres", "scipy"] lxml = ["lxml (>=4.0,<5)"] @@ -856,29 +1062,31 @@ repacker = ["uharfbuzz (>=0.23.0)"] symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=14.0.0)"] +unicode = ["unicodedata2 (>=15.0.0)"] woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "fpdf2" -version = "2.7.4" +version = "2.7.6" description = "Simple & fast PDF generation for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "fpdf2-2.7.4-py2.py3-none-any.whl", hash = "sha256:8a62411b66e6901bc576424f113ede0b033e8759a88d0af012bb7c6b0e51ed0d"}, - {file = "fpdf2-2.7.4.tar.gz", hash = "sha256:b2b7197610a83dd6fe96c3b91a633827acc74973b4290103617d371d0d0a8ecf"}, + {file = "fpdf2-2.7.6-py2.py3-none-any.whl", hash = "sha256:2a2fd8f1416cbdad49cc2e54e69c52bbc8ee3339576492effd2e57d48ced48dd"}, + {file = "fpdf2-2.7.6.tar.gz", hash = "sha256:116eb372660d3da55aa0200c09ddca8cd09dae20084e87f08ebc82c9bfe8466e"}, ] [package.dependencies] defusedxml = "*" fonttools = ">=4.34.0" -Pillow = ">=6.2.2,<9.2.dev0 || >=9.3.dev0" +Pillow = ">=6.2.2,<9.2.0 || >=9.3.0" [[package]] name = "future" version = "0.18.3" description = "Clean single-source support for Python 3 and 2" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -887,13 +1095,14 @@ files = [ [[package]] name = "gitdb" -version = "4.0.10" +version = "4.0.11" description = "Git Object Database" -optional = true +category = "dev" +optional = false python-versions = ">=3.7" files = [ - {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, - {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, ] [package.dependencies] @@ -901,35 +1110,38 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.31" +version = "3.1.40" description = "GitPython is a Python library used to interact with Git repositories" -optional = true +category = "dev" +optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, - {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, + {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, + {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" +[package.extras] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] + [[package]] name = "google-auth" -version = "2.20.0" +version = "2.23.3" description = "Google Authentication Library" +category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "google-auth-2.20.0.tar.gz", hash = "sha256:030af34138909ccde0fbce611afc178f1d65d32fbff281f25738b1fe1c6f3eaa"}, - {file = "google_auth-2.20.0-py2.py3-none-any.whl", hash = "sha256:23b7b0950fcda519bfb6692bf0d5289d2ea49fc143717cc7188458ec620e63fa"}, + {file = "google-auth-2.23.3.tar.gz", hash = "sha256:6864247895eea5d13b9c57c9e03abb49cb94ce2dc7c58e91cba3248c7477c9e3"}, + {file = "google_auth-2.23.3-py2.py3-none-any.whl", hash = "sha256:a8f4608e65c244ead9e0538f181a96c6e11199ec114d41f1d7b1bffa96937bda"}, ] [package.dependencies] cachetools = ">=2.0.0,<6.0" pyasn1-modules = ">=0.2.1" rsa = ">=3.1.4,<5" -six = ">=1.9.0" -urllib3 = "<2.0" [package.extras] aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] @@ -940,23 +1152,25 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "gotrue" -version = "1.0.2" +version = "1.2.0" description = "Python Client Library for GoTrue" +category = "main" optional = true python-versions = ">=3.8,<4.0" files = [ - {file = "gotrue-1.0.2-py3-none-any.whl", hash = "sha256:5377e7fd316b77df7be9e0c3c017d338bed2ba2e95a99fb44374b523d167ec65"}, - {file = "gotrue-1.0.2.tar.gz", hash = "sha256:9ad9b2536ca68676cf37dc663b64f259956826075e80a9cb3f5a3ba150355811"}, + {file = "gotrue-1.2.0-py3-none-any.whl", hash = "sha256:b44fb3807b1ee96751cb7a64a75aa5f21d610a0de2431e4c6e81045d8cda3c79"}, + {file = "gotrue-1.2.0.tar.gz", hash = "sha256:f80befe60d713d5b524e70591fc22df4c5be5821d370585693cd76ac8c45eeeb"}, ] [package.dependencies] httpx = ">=0.23,<0.25" -pydantic = ">=1.10.0,<2.0.0" +pydantic = ">=1.10,<3" [[package]] name = "grafana-api" version = "1.0.3" description = "Yet another Python library for Grafana API" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -974,6 +1188,7 @@ test = ["codecov (>=2.1.0)", "coverage (>=5.2.0)", "requests-mock (>=1.8.0)", "u name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -985,6 +1200,7 @@ files = [ name = "hikaru-core" version = "1.1.1" description = "Hikaru allows you to smoothly move between Kubernetes YAML, Python objects, and Python source, in any direction. Hikaru-core provides the basic machinery for all Hikaru model packages to work with Kubernetes." +category = "main" optional = false python-versions = "*" files = [ @@ -999,6 +1215,7 @@ kubernetes = ">=23.6.0" name = "hikaru-model-26" version = "1.1.1" description = "Hikaru allows you to smoothly move between Kubernetes YAML, Python objects, and Python source, in any direction" +category = "main" optional = false python-versions = "*" files = [ @@ -1013,6 +1230,7 @@ kubernetes = ">=26.1.0" name = "httmock" version = "1.4.0" description = "A mocking library for requests." +category = "main" optional = false python-versions = "*" files = [ @@ -1025,52 +1243,55 @@ requests = ">=1.0.0" [[package]] name = "httpcore" -version = "0.16.3" +version = "0.17.3" description = "A minimal low-level HTTP client." +category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, + {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"}, + {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"}, ] [package.dependencies] anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" +sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "httpx" -version = "0.23.3" +version = "0.24.1" description = "The next generation HTTP client." +category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, + {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"}, + {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"}, ] [package.dependencies] certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = ">=0.15.0,<0.18.0" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "humanize" version = "3.14.0" description = "Python humanize utilities" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1083,13 +1304,14 @@ tests = ["freezegun", "pytest", "pytest-cov"] [[package]] name = "identify" -version = "2.5.24" +version = "2.5.30" description = "File identification library for Python" +category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, - {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, + {file = "identify-2.5.30-py2.py3-none-any.whl", hash = "sha256:afe67f26ae29bab007ec21b03d4114f41316ab9dd15aa8736a167481e108da54"}, + {file = "identify-2.5.30.tar.gz", hash = "sha256:f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d"}, ] [package.extras] @@ -1097,19 +1319,21 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "2.10" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.5" files = [ - {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, - {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] [[package]] name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1119,13 +1343,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.6.0" +version = "6.8.0" description = "Read metadata from Python packages" +category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, - {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, ] [package.dependencies] @@ -1134,30 +1359,29 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +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"] [[package]] name = "importlib-resources" -version = "6.0.0" +version = "6.1.0" description = "Read resources from Python packages" +category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.0.0-py3-none-any.whl", hash = "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185"}, - {file = "importlib_resources-6.0.0.tar.gz", hash = "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2"}, + {file = "importlib_resources-6.1.0-py3-none-any.whl", hash = "sha256:aa50258bbfa56d4e33fbd8aa3ef48ded10d1735f11532b8df95388cc6bdb7e83"}, + {file = "importlib_resources-6.1.0.tar.gz", hash = "sha256:9d48dcccc213325e810fd723e7fbb45ccb39f6cf5c31f00cf2b965f5f10f3cb9"}, ] -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1165,21 +1389,11 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -[[package]] -name = "invoke" -version = "1.7.3" -description = "Pythonic task execution" -optional = true -python-versions = "*" -files = [ - {file = "invoke-1.7.3-py3-none-any.whl", hash = "sha256:d9694a865764dd3fd91f25f7e9a97fb41666e822bbb00e670091e3f43933574d"}, - {file = "invoke-1.7.3.tar.gz", hash = "sha256:41b428342d466a82135d5ab37119685a989713742be46e42a3a399d685579314"}, -] - [[package]] name = "isort" version = "5.10.1" description = "A Python utility / library to sort Python imports." +category = "dev" optional = false python-versions = ">=3.6.1,<4.0" files = [ @@ -1195,69 +1409,39 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "itsdangerous" -version = "1.1.0" -description = "Various helpers to pass data to untrusted environments and back." -optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"}, - {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, -] - -[[package]] -name = "jaraco-classes" -version = "3.3.0" -description = "Utility functions for Python class constructs" -optional = true -python-versions = ">=3.8" -files = [ - {file = "jaraco.classes-3.3.0-py3-none-any.whl", hash = "sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb"}, - {file = "jaraco.classes-3.3.0.tar.gz", hash = "sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621"}, -] - -[package.dependencies] -more-itertools = "*" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] - -[[package]] -name = "jeepney" -version = "0.8.0" -description = "Low-level, pure Python DBus protocol wrapper." +version = "2.1.2" +description = "Safely pass data to untrusted environments and back." +category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"}, - {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"}, + {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, + {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, ] -[package.extras] -test = ["async-timeout", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] -trio = ["async_generator", "trio"] - [[package]] name = "jinja2" -version = "2.11.3" +version = "3.1.2" description = "A very fast and expressive template engine." +category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, - {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"}, + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] [package.dependencies] -MarkupSafe = ">=0.23" +MarkupSafe = ">=2.0" [package.extras] -i18n = ["Babel (>=0.8)"] +i18n = ["Babel (>=2.7)"] [[package]] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1269,6 +1453,7 @@ files = [ name = "jsonref" version = "0.2" description = "An implementation of JSON Reference for Python" +category = "dev" optional = false python-versions = "*" files = [ @@ -1277,124 +1462,176 @@ files = [ ] [[package]] -name = "kafka-python" -version = "2.0.2" -description = "Pure Python client for Apache Kafka" -optional = true -python-versions = "*" +name = "jsonschema" +version = "4.19.1" +description = "An implementation of JSON Schema validation for Python" +category = "dev" +optional = false +python-versions = ">=3.8" files = [ - {file = "kafka-python-2.0.2.tar.gz", hash = "sha256:04dfe7fea2b63726cd6f3e79a2d86e709d608d74406638c5da33a01d45a9d7e3"}, - {file = "kafka_python-2.0.2-py2.py3-none-any.whl", hash = "sha256:2d92418c7cb1c298fa6c7f0fb3519b520d0d7526ac6cb7ae2a4fc65a51a94b6e"}, + {file = "jsonschema-4.19.1-py3-none-any.whl", hash = "sha256:cd5f1f9ed9444e554b38ba003af06c0a8c2868131e56bfbef0550fb450c0330e"}, + {file = "jsonschema-4.19.1.tar.gz", hash = "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf"}, ] +[package.dependencies] +attrs = ">=22.2.0" +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" + [package.extras] -crc32c = ["crc32c"] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] -name = "keyring" -version = "24.2.0" -description = "Store and access your passwords safely." -optional = true +name = "jsonschema-specifications" +version = "2023.7.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +category = "dev" +optional = false python-versions = ">=3.8" files = [ - {file = "keyring-24.2.0-py3-none-any.whl", hash = "sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6"}, - {file = "keyring-24.2.0.tar.gz", hash = "sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509"}, + {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, + {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, ] [package.dependencies] -importlib-metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} -"jaraco.classes" = "*" -jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} -pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} -SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} +referencing = ">=0.28.0" + +[[package]] +name = "kafka-python" +version = "2.0.2" +description = "Pure Python client for Apache Kafka" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "kafka-python-2.0.2.tar.gz", hash = "sha256:04dfe7fea2b63726cd6f3e79a2d86e709d608d74406638c5da33a01d45a9d7e3"}, + {file = "kafka_python-2.0.2-py2.py3-none-any.whl", hash = "sha256:2d92418c7cb1c298fa6c7f0fb3519b520d0d7526ac6cb7ae2a4fc65a51a94b6e"}, +] [package.extras] -completion = ["shtab"] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +crc32c = ["crc32c"] [[package]] name = "kiwisolver" -version = "1.4.4" +version = "1.4.5" description = "A fast implementation of the Cassowary constraint solver" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, - {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, - {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, - {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, - {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, - {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, - {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, - {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, - {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, - {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, + {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, ] [[package]] name = "kubernetes" version = "26.1.0" description = "Kubernetes python client" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1412,7 +1649,7 @@ requests-oauthlib = "*" setuptools = ">=21.0.0" six = ">=1.9.0" urllib3 = ">=1.24.2" -websocket-client = ">=0.32.0,<0.40.0 || >0.40.0,<0.41.dev0 || >=0.43.dev0" +websocket-client = ">=0.32.0,<0.40.0 || >0.40.0,<0.41.0 || >=0.43.0" [package.extras] adal = ["adal (>=1.0.2)"] @@ -1421,6 +1658,7 @@ adal = ["adal (>=1.0.2)"] name = "livereload" version = "2.6.3" description = "Python LiveReload is an awesome tool for web developers" +category = "dev" optional = false python-versions = "*" files = [ @@ -1432,15 +1670,41 @@ files = [ six = "*" tornado = {version = "*", markers = "python_version > \"2.7\""} +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "markdown2" -version = "2.4.8" +version = "2.4.10" description = "A fast and complete Python implementation of Markdown" +category = "main" optional = false python-versions = ">=3.5, <4" files = [ - {file = "markdown2-2.4.8-py2.py3-none-any.whl", hash = "sha256:7d49ca871d3e0e412c65d7d21fcbc13ae897f7876f3e5f14dd4db3b7fbf27f10"}, - {file = "markdown2-2.4.8.tar.gz", hash = "sha256:90475aca3d9c8e7df6d70c51de5bbbe9edf7fcf6a380bd1044d321500f5445da"}, + {file = "markdown2-2.4.10-py2.py3-none-any.whl", hash = "sha256:e6105800483783831f5dc54f827aa5b44eb137ecef5a70293d8ecfbb4109ecc6"}, + {file = "markdown2-2.4.10.tar.gz", hash = "sha256:cdba126d90dc3aef6f4070ac342f974d63f415678959329cc7909f96cc235d72"}, ] [package.extras] @@ -1452,6 +1716,7 @@ wavedrom = ["wavedrom"] name = "markupsafe" version = "2.0.1" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1528,81 +1793,71 @@ files = [ [[package]] name = "matplotlib" -version = "3.7.2" +version = "3.8.0" description = "Python plotting package" -optional = false -python-versions = ">=3.8" -files = [ - {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de"}, - {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d"}, - {file = "matplotlib-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8"}, - {file = "matplotlib-3.7.2-cp310-cp310-win32.whl", hash = "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a"}, - {file = "matplotlib-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4"}, - {file = "matplotlib-3.7.2-cp311-cp311-win32.whl", hash = "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc"}, - {file = "matplotlib-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117"}, - {file = "matplotlib-3.7.2-cp38-cp38-win32.whl", hash = "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13"}, - {file = "matplotlib-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f"}, - {file = "matplotlib-3.7.2-cp39-cp39-win32.whl", hash = "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20"}, - {file = "matplotlib-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11"}, - {file = "matplotlib-3.7.2.tar.gz", hash = "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b"}, +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "matplotlib-3.8.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c4940bad88a932ddc69734274f6fb047207e008389489f2b6f77d9ca485f0e7a"}, + {file = "matplotlib-3.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a33bd3045c7452ca1fa65676d88ba940867880e13e2546abb143035fa9072a9d"}, + {file = "matplotlib-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ea6886e93401c22e534bbfd39201ce8931b75502895cfb115cbdbbe2d31f287"}, + {file = "matplotlib-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d670b9348e712ec176de225d425f150dc8e37b13010d85233c539b547da0be39"}, + {file = "matplotlib-3.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7b37b74f00c4cb6af908cb9a00779d97d294e89fd2145ad43f0cdc23f635760c"}, + {file = "matplotlib-3.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:0e723f5b96f3cd4aad99103dc93e9e3cdc4f18afdcc76951f4857b46f8e39d2d"}, + {file = "matplotlib-3.8.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5dc945a9cb2deb7d197ba23eb4c210e591d52d77bf0ba27c35fc82dec9fa78d4"}, + {file = "matplotlib-3.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8b5a1bf27d078453aa7b5b27f52580e16360d02df6d3dc9504f3d2ce11f6309"}, + {file = "matplotlib-3.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f25ffb6ad972cdffa7df8e5be4b1e3cadd2f8d43fc72085feb1518006178394"}, + {file = "matplotlib-3.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee482731c8c17d86d9ddb5194d38621f9b0f0d53c99006275a12523ab021732"}, + {file = "matplotlib-3.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:36eafe2128772195b373e1242df28d1b7ec6c04c15b090b8d9e335d55a323900"}, + {file = "matplotlib-3.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:061ee58facb3580cd2d046a6d227fb77e9295599c5ec6ad069f06b5821ad1cfc"}, + {file = "matplotlib-3.8.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3cc3776836d0f4f22654a7f2d2ec2004618d5cf86b7185318381f73b80fd8a2d"}, + {file = "matplotlib-3.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6c49a2bd6981264bddcb8c317b6bd25febcece9e2ebfcbc34e7f4c0c867c09dc"}, + {file = "matplotlib-3.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ed11654fc83cd6cfdf6170b453e437674a050a452133a064d47f2f1371f8d3"}, + {file = "matplotlib-3.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dae97fdd6996b3a25da8ee43e3fc734fff502f396801063c6b76c20b56683196"}, + {file = "matplotlib-3.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:87df75f528020a6299f76a1d986c0ed4406e3b2bd44bc5e306e46bca7d45e53e"}, + {file = "matplotlib-3.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:90d74a95fe055f73a6cd737beecc1b81c26f2893b7a3751d52b53ff06ca53f36"}, + {file = "matplotlib-3.8.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c3499c312f5def8f362a2bf761d04fa2d452b333f3a9a3f58805273719bf20d9"}, + {file = "matplotlib-3.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31e793c8bd4ea268cc5d3a695c27b30650ec35238626961d73085d5e94b6ab68"}, + {file = "matplotlib-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d5ee602ef517a89d1f2c508ca189cfc395dd0b4a08284fb1b97a78eec354644"}, + {file = "matplotlib-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5de39dc61ca35342cf409e031f70f18219f2c48380d3886c1cf5ad9f17898e06"}, + {file = "matplotlib-3.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:dd386c80a98b5f51571b9484bf6c6976de383cd2a8cd972b6a9562d85c6d2087"}, + {file = "matplotlib-3.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:f691b4ef47c7384d0936b2e8ebdeb5d526c81d004ad9403dfb9d4c76b9979a93"}, + {file = "matplotlib-3.8.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b11f354aae62a2aa53ec5bb09946f5f06fc41793e351a04ff60223ea9162955"}, + {file = "matplotlib-3.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f54b9fb87ca5acbcdd0f286021bedc162e1425fa5555ebf3b3dfc167b955ad9"}, + {file = "matplotlib-3.8.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:60a6e04dfd77c0d3bcfee61c3cd335fff1b917c2f303b32524cd1235e194ef99"}, + {file = "matplotlib-3.8.0.tar.gz", hash = "sha256:df8505e1c19d5c2c26aff3497a7cbd3ccfc2e97043d1e4db3e76afa399164b69"}, ] [package.dependencies] contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" -importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""} kiwisolver = ">=1.0.1" -numpy = ">=1.20" +numpy = ">=1.21,<2" packaging = ">=20.0" pillow = ">=6.2.0" -pyparsing = ">=2.3.1,<3.1" +pyparsing = ">=2.3.1" python-dateutil = ">=2.7" +setuptools_scm = ">=7" [[package]] -name = "more-itertools" -version = "9.1.0" -description = "More routines for operating on iterables, beyond itertools" -optional = true +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +category = "dev" +optional = false python-versions = ">=3.7" files = [ - {file = "more-itertools-9.1.0.tar.gz", hash = "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d"}, - {file = "more_itertools-9.1.0-py3-none-any.whl", hash = "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3"}, + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] [[package]] name = "mypy" version = "0.991" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1653,6 +1908,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1664,6 +1920,7 @@ files = [ name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -1676,45 +1933,44 @@ setuptools = "*" [[package]] name = "numpy" -version = "1.24.4" +version = "1.25.2" description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, - {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, - {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, - {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, - {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, - {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, - {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, - {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, - {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, - {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, - {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db3ccc4e37a6873045580d413fe79b68e47a681af8db2e046f1dacfa11f86eb3"}, + {file = "numpy-1.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:90319e4f002795ccfc9050110bbbaa16c944b1c37c0baeea43c5fb881693ae1f"}, + {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4a913e29b418d096e696ddd422d8a5d13ffba4ea91f9f60440a3b759b0187"}, + {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f08f2e037bba04e707eebf4bc934f1972a315c883a9e0ebfa8a7756eabf9e357"}, + {file = "numpy-1.25.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bec1e7213c7cb00d67093247f8c4db156fd03075f49876957dca4711306d39c9"}, + {file = "numpy-1.25.2-cp310-cp310-win32.whl", hash = "sha256:7dc869c0c75988e1c693d0e2d5b26034644399dd929bc049db55395b1379e044"}, + {file = "numpy-1.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:834b386f2b8210dca38c71a6e0f4fd6922f7d3fcff935dbe3a570945acb1b545"}, + {file = "numpy-1.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5462d19336db4560041517dbb7759c21d181a67cb01b36ca109b2ae37d32418"}, + {file = "numpy-1.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5652ea24d33585ea39eb6a6a15dac87a1206a692719ff45d53c5282e66d4a8f"}, + {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2"}, + {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e7f0f7f6d0eee8364b9a6304c2845b9c491ac706048c7e8cf47b83123b8dbf"}, + {file = "numpy-1.25.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bb33d5a1cf360304754913a350edda36d5b8c5331a8237268c48f91253c3a364"}, + {file = "numpy-1.25.2-cp311-cp311-win32.whl", hash = "sha256:5883c06bb92f2e6c8181df7b39971a5fb436288db58b5a1c3967702d4278691d"}, + {file = "numpy-1.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:5c97325a0ba6f9d041feb9390924614b60b99209a71a69c876f71052521d42a4"}, + {file = "numpy-1.25.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b79e513d7aac42ae918db3ad1341a015488530d0bb2a6abcbdd10a3a829ccfd3"}, + {file = "numpy-1.25.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb942bfb6f84df5ce05dbf4b46673ffed0d3da59f13635ea9b926af3deb76926"}, + {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e0746410e73384e70d286f93abf2520035250aad8c5714240b0492a7302fdca"}, + {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7806500e4f5bdd04095e849265e55de20d8cc4b661b038957354327f6d9b295"}, + {file = "numpy-1.25.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8b77775f4b7df768967a7c8b3567e309f617dd5e99aeb886fa14dc1a0791141f"}, + {file = "numpy-1.25.2-cp39-cp39-win32.whl", hash = "sha256:2792d23d62ec51e50ce4d4b7d73de8f67a2fd3ea710dcbc8563a51a03fb07b01"}, + {file = "numpy-1.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:76b4115d42a7dfc5d485d358728cdd8719be33cc5ec6ec08632a5d6fca2ed380"}, + {file = "numpy-1.25.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1a1329e26f46230bf77b02cc19e900db9b52f398d6722ca853349a782d4cff55"}, + {file = "numpy-1.25.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3abc71e8b6edba80a01a52e66d83c5d14433cbcd26a40c329ec7ed09f37901"}, + {file = "numpy-1.25.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b9735c27cea5d995496f46a8b1cd7b408b3f34b6d50459d9ac8fe3a20cc17bf"}, + {file = "numpy-1.25.2.tar.gz", hash = "sha256:fd608e19c8d7c55021dffd43bfe5492fab8cc105cc8986f813f8c3c048b38760"}, ] [[package]] name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1731,6 +1987,7 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "opsgenie-sdk" version = "2.1.5" description = "Python SDK for Opsgenie REST API" +category = "main" optional = false python-versions = "*" files = [ @@ -1748,97 +2005,160 @@ urllib3 = ">=1.26.5" [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "pandas" -version = "2.0.3" +version = "2.1.0" description = "Powerful data structures for data analysis, time series, and statistics" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"}, - {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"}, - {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"}, - {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"}, - {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"}, - {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"}, - {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"}, - {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"}, - {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"}, - {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"}, - {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"}, - {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"}, - {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"}, - {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"}, - {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"}, - {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"}, - {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"}, - {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"}, - {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"}, - {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"}, - {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"}, - {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"}, - {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"}, - {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"}, - {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"}, +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:40dd20439ff94f1b2ed55b393ecee9cb6f3b08104c2c40b0cb7186a2f0046242"}, + {file = "pandas-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4f38e4fedeba580285eaac7ede4f686c6701a9e618d8a857b138a126d067f2f"}, + {file = "pandas-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e6a0fe052cf27ceb29be9429428b4918f3740e37ff185658f40d8702f0b3e09"}, + {file = "pandas-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d81e1813191070440d4c7a413cb673052b3b4a984ffd86b8dd468c45742d3cc"}, + {file = "pandas-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eb20252720b1cc1b7d0b2879ffc7e0542dd568f24d7c4b2347cb035206936421"}, + {file = "pandas-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:38f74ef7ebc0ffb43b3d633e23d74882bce7e27bfa09607f3c5d3e03ffd9a4a5"}, + {file = "pandas-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cda72cc8c4761c8f1d97b169661f23a86b16fdb240bdc341173aee17e4d6cedd"}, + {file = "pandas-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d97daeac0db8c993420b10da4f5f5b39b01fc9ca689a17844e07c0a35ac96b4b"}, + {file = "pandas-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c58b1113892e0c8078f006a167cc210a92bdae23322bb4614f2f0b7a4b510f"}, + {file = "pandas-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:629124923bcf798965b054a540f9ccdfd60f71361255c81fa1ecd94a904b9dd3"}, + {file = "pandas-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:70cf866af3ab346a10debba8ea78077cf3a8cd14bd5e4bed3d41555a3280041c"}, + {file = "pandas-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d53c8c1001f6a192ff1de1efe03b31a423d0eee2e9e855e69d004308e046e694"}, + {file = "pandas-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86f100b3876b8c6d1a2c66207288ead435dc71041ee4aea789e55ef0e06408cb"}, + {file = "pandas-2.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28f330845ad21c11db51e02d8d69acc9035edfd1116926ff7245c7215db57957"}, + {file = "pandas-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9a6ccf0963db88f9b12df6720e55f337447aea217f426a22d71f4213a3099a6"}, + {file = "pandas-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d99e678180bc59b0c9443314297bddce4ad35727a1a2656dbe585fd78710b3b9"}, + {file = "pandas-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b31da36d376d50a1a492efb18097b9101bdbd8b3fbb3f49006e02d4495d4c644"}, + {file = "pandas-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0164b85937707ec7f70b34a6c3a578dbf0f50787f910f21ca3b26a7fd3363437"}, + {file = "pandas-2.1.0.tar.gz", hash = "sha256:62c24c7fc59e42b775ce0679cfa7b14a5f9bfb7643cfbe708c960699e05fb918"}, +] + +[package.dependencies] +numpy = {version = ">=1.23.2", markers = "python_version >= \"3.11\""} +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.1" + +[package.extras] +all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] +aws = ["s3fs (>=2022.05.0)"] +clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] +compression = ["zstandard (>=0.17.0)"] +computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2022.05.0)"] +gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] +hdf5 = ["tables (>=3.7.0)"] +html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] +mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] +spss = ["pyreadstat (>=1.1.5)"] +sql-other = ["SQLAlchemy (>=1.4.36)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.8.0)"] + +[[package]] +name = "pandas" +version = "2.1.2" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:24057459f19db9ebb02984c6fdd164a970b31a95f38e4a49cf7615b36a1b532c"}, + {file = "pandas-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a6cf8fcc8a63d333970b950a7331a30544cf59b1a97baf0a7409e09eafc1ac38"}, + {file = "pandas-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ae6ffbd9d614c20d028c7117ee911fc4e266b4dca2065d5c5909e401f8ff683"}, + {file = "pandas-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff794eeb7883c5aefb1ed572e7ff533ae779f6c6277849eab9e77986e352688"}, + {file = "pandas-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:02954e285e8e2f4006b6f22be6f0df1f1c3c97adbb7ed211c6b483426f20d5c8"}, + {file = "pandas-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:5b40c9f494e1f27588c369b9e4a6ca19cd924b3a0e1ef9ef1a8e30a07a438f43"}, + {file = "pandas-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:08d287b68fd28906a94564f15118a7ca8c242e50ae7f8bd91130c362b2108a81"}, + {file = "pandas-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bbd98dcdcd32f408947afdb3f7434fade6edd408c3077bbce7bd840d654d92c6"}, + {file = "pandas-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e90c95abb3285d06f6e4feedafc134306a8eced93cb78e08cf50e224d5ce22e2"}, + {file = "pandas-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52867d69a54e71666cd184b04e839cff7dfc8ed0cd6b936995117fdae8790b69"}, + {file = "pandas-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d0382645ede2fde352da2a885aac28ec37d38587864c0689b4b2361d17b1d4c"}, + {file = "pandas-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:65177d1c519b55e5b7f094c660ed357bb7d86e799686bb71653b8a4803d8ff0d"}, + {file = "pandas-2.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5aa6b86802e8cf7716bf4b4b5a3c99b12d34e9c6a9d06dad254447a620437931"}, + {file = "pandas-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d594e2ce51b8e0b4074e6644758865dc2bb13fd654450c1eae51201260a539f1"}, + {file = "pandas-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3223f997b6d2ebf9c010260cf3d889848a93f5d22bb4d14cd32638b3d8bba7ad"}, + {file = "pandas-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4944dc004ca6cc701dfa19afb8bdb26ad36b9bed5bcec617d2a11e9cae6902"}, + {file = "pandas-2.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3f76280ce8ec216dde336e55b2b82e883401cf466da0fe3be317c03fb8ee7c7d"}, + {file = "pandas-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:7ad20d24acf3a0042512b7e8d8fdc2e827126ed519d6bd1ed8e6c14ec8a2c813"}, + {file = "pandas-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:021f09c15e1381e202d95d4a21ece8e7f2bf1388b6d7e9cae09dfe27bd2043d1"}, + {file = "pandas-2.1.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7f12b2de0060b0b858cfec0016e7d980ae5bae455a1746bfcc70929100ee633"}, + {file = "pandas-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c166b9bb27c1715bed94495d9598a7f02950b4749dba9349c1dd2cbf10729d"}, + {file = "pandas-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25c9976c17311388fcd953cb3d0697999b2205333f4e11e669d90ff8d830d429"}, + {file = "pandas-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:851b5afbb0d62f6129ae891b533aa508cc357d5892c240c91933d945fff15731"}, + {file = "pandas-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:e78507adcc730533619de07bfdd1c62b2918a68cd4419ea386e28abf7f6a1e5c"}, + {file = "pandas-2.1.2.tar.gz", hash = "sha256:52897edc2774d2779fbeb6880d2cfb305daa0b1a29c16b91f531a18918a6e0f3"}, ] [package.dependencies] numpy = [ - {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, - {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" tzdata = ">=2022.1" [package.extras] -all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] -aws = ["s3fs (>=2021.08.0)"] -clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"] -compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"] -computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"] +all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] +aws = ["s3fs (>=2022.05.0)"] +clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] +compression = ["zstandard (>=0.17.0)"] +computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] feather = ["pyarrow (>=7.0.0)"] -fss = ["fsspec (>=2021.07.0)"] -gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"] -hdf5 = ["tables (>=3.6.1)"] -html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"] -mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"] +fss = ["fsspec (>=2022.05.0)"] +gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] +hdf5 = ["tables (>=3.7.0)"] +html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] +mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] parquet = ["pyarrow (>=7.0.0)"] -performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"] +performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] plot = ["matplotlib (>=3.6.1)"] -postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"] -spss = ["pyreadstat (>=1.1.2)"] -sql-other = ["SQLAlchemy (>=1.4.16)"] -test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.6.3)"] +postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] +spss = ["pyreadstat (>=1.1.5)"] +sql-other = ["SQLAlchemy (>=1.4.36)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.8.0)"] [[package]] name = "pathspec" -version = "0.11.1" +version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] [[package]] name = "pillow" version = "9.5.0" description = "Python Imaging Library (Fork)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1914,44 +2234,32 @@ files = [ docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -[[package]] -name = "pkginfo" -version = "1.9.6" -description = "Query metadata from sdists / bdists / installed packages." -optional = true -python-versions = ">=3.6" -files = [ - {file = "pkginfo-1.9.6-py3-none-any.whl", hash = "sha256:4b7a555a6d5a22169fcc9cf7bfd78d296b0361adad412a346c1226849af5e546"}, - {file = "pkginfo-1.9.6.tar.gz", hash = "sha256:8fd5896e8718a4372f0ea9cc9d96f6417c9b986e23a4d116dda26b62cc29d046"}, -] - -[package.extras] -testing = ["pytest", "pytest-cov"] - [[package]] name = "platformdirs" -version = "3.5.3" +version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.5.3-py3-none-any.whl", hash = "sha256:0ade98a4895e87dc51d47151f7d2ec290365a585151d97b4d8d6312ed6132fed"}, - {file = "platformdirs-3.5.3.tar.gz", hash = "sha256:e48fabd87db8f3a7df7150a4a5ea22c546ee8bc39bc2473244730d4b56d2cc4e"}, + {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, + {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -1962,6 +2270,7 @@ testing = ["pytest", "pytest-benchmark"] name = "poetry-core" version = "1.1.0a7" description = "Poetry PEP 517 Build Backend" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -1971,25 +2280,27 @@ files = [ [[package]] name = "postgrest" -version = "0.10.6" +version = "0.11.0" description = "PostgREST client for Python. This library provides an ORM interface to PostgREST." +category = "main" optional = true python-versions = ">=3.8,<4.0" files = [ - {file = "postgrest-0.10.6-py3-none-any.whl", hash = "sha256:7302068ce3cd80e761e35d6d665d3e65632442488258e3299c008013119d7fe6"}, - {file = "postgrest-0.10.6.tar.gz", hash = "sha256:ee145d53ea8642a16fa7f42848443baa08ae1e6f41e071865f5f54bcb3b24aa3"}, + {file = "postgrest-0.11.0-py3-none-any.whl", hash = "sha256:1ee5ff587890824ffe49f474d7e8142161eeb8d99ddff4fc59559ea9f6d6f224"}, + {file = "postgrest-0.11.0.tar.gz", hash = "sha256:ac243cb984ed264d84707ded5958e0d6b51209b41a77e8ce43f56fc079414980"}, ] [package.dependencies] deprecation = ">=2.1.0,<3.0.0" -httpx = ">=0.23.0,<0.24.0" -pydantic = ">=1.9.0,<2.0.0" +httpx = ">=0.24.0,<0.25.0" +pydantic = ">=1.9,<3.0" strenum = ">=0.4.9,<0.5.0" [[package]] name = "pre-commit" version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2006,13 +2317,14 @@ virtualenv = ">=20.10.0" [[package]] name = "prometheus-api-client" -version = "0.5.3" +version = "0.5.4" description = "A small python api to collect data from prometheus" +category = "main" optional = false python-versions = "*" files = [ - {file = "prometheus-api-client-0.5.3.tar.gz", hash = "sha256:9b2c293c202072e5cf67199a9cc41d5eb32f02dd8cc23c5847b603cd9ce99bcf"}, - {file = "prometheus_api_client-0.5.3-py3-none-any.whl", hash = "sha256:be11619748f92e63d634e18908779dc0e29a4d4e57de7a1e6b1729fcc6cd5617"}, + {file = "prometheus-api-client-0.5.4.tar.gz", hash = "sha256:38568107e182aa26f22599f794215ea3dde5ecd3ef14944eef614eeaa46c9b6a"}, + {file = "prometheus_api_client-0.5.4-py3-none-any.whl", hash = "sha256:6bdfe2db75e239c4d73eb8b941bdd1dc1c51ed42d3d1a2eb16dc9878658836d5"}, ] [package.dependencies] @@ -2027,6 +2339,7 @@ requests = "*" name = "prometheus-client" version = "0.12.0" description = "Python client for the Prometheus monitoring system." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2041,6 +2354,7 @@ twisted = ["twisted"] name = "prometrix" version = "0.1.10" description = "" +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -2054,10 +2368,34 @@ botocore = ">=1.31.15,<2.0.0" prometheus-api-client = ">=0.5.3,<0.6.0" pydantic = ">=1.8.1,<2.0.0" +[[package]] +name = "protobuf" +version = "4.24.4" +description = "" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "protobuf-4.24.4-cp310-abi3-win32.whl", hash = "sha256:ec9912d5cb6714a5710e28e592ee1093d68c5ebfeda61983b3f40331da0b1ebb"}, + {file = "protobuf-4.24.4-cp310-abi3-win_amd64.whl", hash = "sha256:1badab72aa8a3a2b812eacfede5020472e16c6b2212d737cefd685884c191085"}, + {file = "protobuf-4.24.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e61a27f362369c2f33248a0ff6896c20dcd47b5d48239cb9720134bef6082e4"}, + {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:bffa46ad9612e6779d0e51ae586fde768339b791a50610d85eb162daeb23661e"}, + {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b493cb590960ff863743b9ff1452c413c2ee12b782f48beca77c8da3e2ffe9d9"}, + {file = "protobuf-4.24.4-cp37-cp37m-win32.whl", hash = "sha256:dbbed8a56e56cee8d9d522ce844a1379a72a70f453bde6243e3c86c30c2a3d46"}, + {file = "protobuf-4.24.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6b7d2e1c753715dcfe9d284a25a52d67818dd43c4932574307daf836f0071e37"}, + {file = "protobuf-4.24.4-cp38-cp38-win32.whl", hash = "sha256:02212557a76cd99574775a81fefeba8738d0f668d6abd0c6b1d3adcc75503dbe"}, + {file = "protobuf-4.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:2fa3886dfaae6b4c5ed2730d3bf47c7a38a72b3a1f0acb4d4caf68e6874b947b"}, + {file = "protobuf-4.24.4-cp39-cp39-win32.whl", hash = "sha256:b77272f3e28bb416e2071186cb39efd4abbf696d682cbb5dc731308ad37fa6dd"}, + {file = "protobuf-4.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:9fee5e8aa20ef1b84123bb9232b3f4a5114d9897ed89b4b8142d81924e05d79b"}, + {file = "protobuf-4.24.4-py3-none-any.whl", hash = "sha256:80797ce7424f8c8d2f2547e2d42bfbb6c08230ce5832d6c099a37335c9c90a92"}, + {file = "protobuf-4.24.4.tar.gz", hash = "sha256:5a70731910cd9104762161719c3d883c960151eea077134458503723b60e3667"}, +] + [[package]] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2065,10 +2403,53 @@ files = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +[[package]] +name = "pyarrow" +version = "13.0.0" +description = "Python library for Apache Arrow" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyarrow-13.0.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:1afcc2c33f31f6fb25c92d50a86b7a9f076d38acbcb6f9e74349636109550148"}, + {file = "pyarrow-13.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:70fa38cdc66b2fc1349a082987f2b499d51d072faaa6b600f71931150de2e0e3"}, + {file = "pyarrow-13.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd57b13a6466822498238877892a9b287b0a58c2e81e4bdb0b596dbb151cbb73"}, + {file = "pyarrow-13.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ce69f7bf01de2e2764e14df45b8404fc6f1a5ed9871e8e08a12169f87b7a26"}, + {file = "pyarrow-13.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:588f0d2da6cf1b1680974d63be09a6530fd1bd825dc87f76e162404779a157dc"}, + {file = "pyarrow-13.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6241afd72b628787b4abea39e238e3ff9f34165273fad306c7acf780dd850956"}, + {file = "pyarrow-13.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:fda7857e35993673fcda603c07d43889fca60a5b254052a462653f8656c64f44"}, + {file = "pyarrow-13.0.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:aac0ae0146a9bfa5e12d87dda89d9ef7c57a96210b899459fc2f785303dcbb67"}, + {file = "pyarrow-13.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7759994217c86c161c6a8060509cfdf782b952163569606bb373828afdd82e8"}, + {file = "pyarrow-13.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:868a073fd0ff6468ae7d869b5fc1f54de5c4255b37f44fb890385eb68b68f95d"}, + {file = "pyarrow-13.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51be67e29f3cfcde263a113c28e96aa04362ed8229cb7c6e5f5c719003659d33"}, + {file = "pyarrow-13.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:d1b4e7176443d12610874bb84d0060bf080f000ea9ed7c84b2801df851320295"}, + {file = "pyarrow-13.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:69b6f9a089d116a82c3ed819eea8fe67dae6105f0d81eaf0fdd5e60d0c6e0944"}, + {file = "pyarrow-13.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:ab1268db81aeb241200e321e220e7cd769762f386f92f61b898352dd27e402ce"}, + {file = "pyarrow-13.0.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:ee7490f0f3f16a6c38f8c680949551053c8194e68de5046e6c288e396dccee80"}, + {file = "pyarrow-13.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3ad79455c197a36eefbd90ad4aa832bece7f830a64396c15c61a0985e337287"}, + {file = "pyarrow-13.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68fcd2dc1b7d9310b29a15949cdd0cb9bc34b6de767aff979ebf546020bf0ba0"}, + {file = "pyarrow-13.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc6fd330fd574c51d10638e63c0d00ab456498fc804c9d01f2a61b9264f2c5b2"}, + {file = "pyarrow-13.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:e66442e084979a97bb66939e18f7b8709e4ac5f887e636aba29486ffbf373763"}, + {file = "pyarrow-13.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:0f6eff839a9e40e9c5610d3ff8c5bdd2f10303408312caf4c8003285d0b49565"}, + {file = "pyarrow-13.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b30a27f1cddf5c6efcb67e598d7823a1e253d743d92ac32ec1eb4b6a1417867"}, + {file = "pyarrow-13.0.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:09552dad5cf3de2dc0aba1c7c4b470754c69bd821f5faafc3d774bedc3b04bb7"}, + {file = "pyarrow-13.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3896ae6c205d73ad192d2fc1489cd0edfab9f12867c85b4c277af4d37383c18c"}, + {file = "pyarrow-13.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6647444b21cb5e68b593b970b2a9a07748dd74ea457c7dadaa15fd469c48ada1"}, + {file = "pyarrow-13.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47663efc9c395e31d09c6aacfa860f4473815ad6804311c5433f7085415d62a7"}, + {file = "pyarrow-13.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:b9ba6b6d34bd2563345488cf444510588ea42ad5613df3b3509f48eb80250afd"}, + {file = "pyarrow-13.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:d00d374a5625beeb448a7fa23060df79adb596074beb3ddc1838adb647b6ef09"}, + {file = "pyarrow-13.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:c51afd87c35c8331b56f796eff954b9c7f8d4b7fef5903daf4e05fcf017d23a8"}, + {file = "pyarrow-13.0.0.tar.gz", hash = "sha256:83333726e83ed44b0ac94d8d7a21bbdee4a05029c3b1e8db58a863eec8fd8a33"}, +] + +[package.dependencies] +numpy = ">=1.16.6" + [[package]] name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2080,6 +2461,7 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2094,6 +2476,7 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2103,47 +2486,48 @@ files = [ [[package]] name = "pydantic" -version = "1.10.9" +version = "1.10.13" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca"}, - {file = "pydantic-1.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f"}, - {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896"}, - {file = "pydantic-1.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d"}, - {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f"}, - {file = "pydantic-1.10.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4"}, - {file = "pydantic-1.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f"}, - {file = "pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0"}, - {file = "pydantic-1.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7"}, - {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d"}, - {file = "pydantic-1.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c"}, - {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91"}, - {file = "pydantic-1.10.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8"}, - {file = "pydantic-1.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f"}, - {file = "pydantic-1.10.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece"}, - {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a"}, - {file = "pydantic-1.10.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a"}, - {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60"}, - {file = "pydantic-1.10.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf"}, - {file = "pydantic-1.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29"}, - {file = "pydantic-1.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82"}, - {file = "pydantic-1.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6"}, - {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766"}, - {file = "pydantic-1.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3"}, - {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572"}, - {file = "pydantic-1.10.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e"}, - {file = "pydantic-1.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb"}, - {file = "pydantic-1.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298"}, - {file = "pydantic-1.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276"}, - {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60"}, - {file = "pydantic-1.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc"}, - {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a"}, - {file = "pydantic-1.10.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4"}, - {file = "pydantic-1.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1"}, - {file = "pydantic-1.10.9-py3-none-any.whl", hash = "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305"}, - {file = "pydantic-1.10.9.tar.gz", hash = "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"}, + {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"}, + {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"}, + {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"}, + {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"}, + {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"}, + {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"}, + {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"}, + {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"}, + {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"}, + {file = "pydantic-1.10.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132"}, + {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5"}, + {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8"}, + {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87"}, + {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f"}, + {file = "pydantic-1.10.13-cp37-cp37m-win_amd64.whl", hash = "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"}, + {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"}, + {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"}, + {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"}, + {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"}, + {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"}, + {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"}, + {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"}, + {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"}, + {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"}, + {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"}, ] [package.dependencies] @@ -2153,10 +2537,31 @@ typing-extensions = ">=4.2.0" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "pydeck" +version = "0.8.0" +description = "Widget for deck.gl maps" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydeck-0.8.0-py2.py3-none-any.whl", hash = "sha256:a8fa7757c6f24bba033af39db3147cb020eef44012ba7e60d954de187f9ed4d5"}, + {file = "pydeck-0.8.0.tar.gz", hash = "sha256:07edde833f7cfcef6749124351195aa7dcd24663d4909fd7898dbd0b6fbc01ec"}, +] + +[package.dependencies] +jinja2 = ">=2.10.1" +numpy = ">=1.16.4" + +[package.extras] +carto = ["pydeck-carto"] +jupyter = ["ipykernel (>=5.1.2)", "ipython (>=5.8.0)", "ipywidgets (>=7,<8)", "traitlets (>=4.3.2)"] + [[package]] name = "pygal" version = "3.0.0" description = "A Python svg graph plotting library" +category = "dev" optional = false python-versions = "*" files = [ @@ -2172,13 +2577,14 @@ test = ["cairosvg", "coveralls", "flask", "lxml", "pygal-maps-ch", "pygal-maps-f [[package]] name = "pygments" -version = "2.15.1" +version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, - {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, ] [package.extras] @@ -2188,6 +2594,7 @@ plugins = ["importlib-metadata"] name = "pyjwt" version = "2.4.0" description = "JSON Web Token implementation in Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2205,6 +2612,7 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] name = "pymsteams" version = "0.1.16" description = "Format messages and post to Microsoft Teams." +category = "main" optional = false python-versions = ">=2.7" files = [ @@ -2216,13 +2624,14 @@ requests = ">=2.20.0" [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, ] [package.extras] @@ -2232,6 +2641,7 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2256,6 +2666,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2270,6 +2681,7 @@ six = ">=1.5" name = "python-dotenv" version = "0.18.0" description = "Read key-value pairs from a .env file and set them as environment variables" +category = "dev" optional = false python-versions = "*" files = [ @@ -2280,60 +2692,11 @@ files = [ [package.extras] cli = ["click (>=5.0)"] -[[package]] -name = "python-gitlab" -version = "3.15.0" -description = "Interact with GitLab API" -optional = true -python-versions = ">=3.7.0" -files = [ - {file = "python-gitlab-3.15.0.tar.gz", hash = "sha256:c9e65eb7612a9fbb8abf0339972eca7fd7a73d4da66c9b446ffe528930aff534"}, - {file = "python_gitlab-3.15.0-py3-none-any.whl", hash = "sha256:8f8d1c0d387f642eb1ac7bf5e8e0cd8b3dd49c6f34170cee3c7deb7d384611f3"}, -] - -[package.dependencies] -requests = ">=2.25.0" -requests-toolbelt = ">=0.10.1" - -[package.extras] -autocompletion = ["argcomplete (>=1.10.0,<3)"] -yaml = ["PyYaml (>=5.2)"] - -[[package]] -name = "python-semantic-release" -version = "7.33.2" -description = "Automatic Semantic Versioning for Python projects" -optional = true -python-versions = "*" -files = [ - {file = "python-semantic-release-7.33.2.tar.gz", hash = "sha256:c23b4bb746e9ddbe1ba7497c48f7d81403e67a14ceb37928ef667c1fbee5e324"}, - {file = "python_semantic_release-7.33.2-py3-none-any.whl", hash = "sha256:9e4990cc0a4dc37482ac5ec7fe6f70f71681228f68f0fa39370415701fdcf632"}, -] - -[package.dependencies] -click = ">=7,<9" -click-log = ">=0.3,<1" -dotty-dict = ">=1.3.0,<2" -gitpython = ">=3.0.8,<4" -invoke = ">=1.4.1,<2" -packaging = "*" -python-gitlab = ">=2,<4" -requests = ">=2.25,<3" -semver = ">=2.10,<3" -tomlkit = ">=0.10,<1.0" -twine = ">=3,<4" -wheel = "*" - -[package.extras] -dev = ["black", "isort", "tox"] -docs = ["Jinja2 (==3.0.3)", "Sphinx (==1.3.6)"] -mypy = ["mypy", "types-requests"] -test = ["coverage (>=5,<6)", "mock (==1.3.0)", "pytest (>=7,<8)", "pytest-mock (>=2,<3)", "pytest-xdist (>=1,<2)", "responses (==0.13.3)"] - [[package]] name = "pytz" version = "2021.3" description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" files = [ @@ -2341,89 +2704,61 @@ files = [ {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, ] -[[package]] -name = "pywin32-ctypes" -version = "0.2.2" -description = "A (partial) reimplementation of pywin32 using ctypes/cffi" -optional = true -python-versions = ">=3.6" -files = [ - {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, - {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, -] - [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] - -[[package]] -name = "readme-renderer" -version = "40.0" -description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" -optional = true -python-versions = ">=3.8" -files = [ - {file = "readme_renderer-40.0-py3-none-any.whl", hash = "sha256:e18feb2a1e7706f2865b81ebb460056d93fb29d69daa10b223c00faa7bd9a00a"}, - {file = "readme_renderer-40.0.tar.gz", hash = "sha256:9f77b519d96d03d7d7dce44977ba543090a14397c4f60de5b6eb5b8048110aa4"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {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-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"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {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-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {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"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {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-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"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {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-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"}, ] -[package.dependencies] -bleach = ">=2.1.0" -docutils = ">=0.13.1" -Pygments = ">=2.5.1" - -[package.extras] -md = ["cmarkgfm (>=0.8.0)"] - [[package]] name = "realtime" version = "1.0.0" description = "" +category = "main" optional = true python-versions = ">=3.8,<4.0" files = [ @@ -2436,128 +2771,147 @@ python-dateutil = ">=2.8.1,<3.0.0" typing-extensions = ">=4.2.0,<5.0.0" websockets = ">=10.3,<11.0" +[[package]] +name = "referencing" +version = "0.30.2" +description = "JSON Referencing + Python" +category = "dev" +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"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "regex" -version = "2023.6.3" +version = "2023.10.3" description = "Alternative regular expression module, to replace re." +category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "regex-2023.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd"}, - {file = "regex-2023.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef"}, - {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc"}, - {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef"}, - {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8"}, - {file = "regex-2023.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06"}, - {file = "regex-2023.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d"}, - {file = "regex-2023.6.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536"}, - {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2"}, - {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222"}, - {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2"}, - {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18"}, - {file = "regex-2023.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568"}, - {file = "regex-2023.6.3-cp310-cp310-win32.whl", hash = "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1"}, - {file = "regex-2023.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0"}, - {file = "regex-2023.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969"}, - {file = "regex-2023.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa"}, - {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e"}, - {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df"}, - {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c"}, - {file = "regex-2023.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8"}, - {file = "regex-2023.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9"}, - {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c"}, - {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7"}, - {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f"}, - {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461"}, - {file = "regex-2023.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477"}, - {file = "regex-2023.6.3-cp311-cp311-win32.whl", hash = "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9"}, - {file = "regex-2023.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af"}, - {file = "regex-2023.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525"}, - {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697"}, - {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd"}, - {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9"}, - {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693"}, - {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14"}, - {file = "regex-2023.6.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f"}, - {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e"}, - {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3"}, - {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1"}, - {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1"}, - {file = "regex-2023.6.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787"}, - {file = "regex-2023.6.3-cp36-cp36m-win32.whl", hash = "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54"}, - {file = "regex-2023.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27"}, - {file = "regex-2023.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487"}, - {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3"}, - {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16"}, - {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3"}, - {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3"}, - {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc"}, - {file = "regex-2023.6.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019"}, - {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777"}, - {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee"}, - {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591"}, - {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0"}, - {file = "regex-2023.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb"}, - {file = "regex-2023.6.3-cp37-cp37m-win32.whl", hash = "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7"}, - {file = "regex-2023.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23"}, - {file = "regex-2023.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07"}, - {file = "regex-2023.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289"}, - {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c"}, - {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036"}, - {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7"}, - {file = "regex-2023.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d"}, - {file = "regex-2023.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2"}, - {file = "regex-2023.6.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff"}, - {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82"}, - {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06"}, - {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f"}, - {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747"}, - {file = "regex-2023.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9"}, - {file = "regex-2023.6.3-cp38-cp38-win32.whl", hash = "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88"}, - {file = "regex-2023.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72"}, - {file = "regex-2023.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751"}, - {file = "regex-2023.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68"}, - {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf"}, - {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a"}, - {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1"}, - {file = "regex-2023.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6"}, - {file = "regex-2023.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77"}, - {file = "regex-2023.6.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9"}, - {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd"}, - {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938"}, - {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7"}, - {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac"}, - {file = "regex-2023.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd"}, - {file = "regex-2023.6.3-cp39-cp39-win32.whl", hash = "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f"}, - {file = "regex-2023.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a"}, - {file = "regex-2023.6.3.tar.gz", hash = "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0"}, + {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"}, + {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"}, + {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"}, + {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"}, + {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"}, + {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"}, + {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"}, + {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"}, + {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"}, + {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"}, + {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"}, + {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"}, + {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"}, + {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"}, + {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"}, + {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"}, + {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"}, + {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"}, + {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"}, + {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"}, + {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"}, + {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"}, + {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"}, + {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"}, ] [[package]] name = "requests" -version = "2.25.1" +version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, - {file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" -chardet = ">=3.0.2,<5" -idna = ">=2.5,<3" -urllib3 = ">=1.21.1,<1.27" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" [package.extras] -security = ["cryptography (>=1.3.4)", "pyOpenSSL (>=0.14)"] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2576,6 +2930,7 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2587,26 +2942,138 @@ files = [ requests = ">=2.0.1,<3.0.0" [[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = true -python-versions = "*" +name = "rich" +version = "13.6.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "dev" +optional = false +python-versions = ">=3.7.0" files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, + {file = "rich-13.6.0-py3-none-any.whl", hash = "sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245"}, + {file = "rich-13.6.0.tar.gz", hash = "sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef"}, ] [package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" [package.extras] -idna2008 = ["idna"] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "rpds-py" +version = "0.10.6" +description = "Python bindings to Rust's persistent data structures (rpds)" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.10.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:6bdc11f9623870d75692cc33c59804b5a18d7b8a4b79ef0b00b773a27397d1f6"}, + {file = "rpds_py-0.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26857f0f44f0e791f4a266595a7a09d21f6b589580ee0585f330aaccccb836e3"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7f5e15c953ace2e8dde9824bdab4bec50adb91a5663df08d7d994240ae6fa31"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61fa268da6e2e1cd350739bb61011121fa550aa2545762e3dc02ea177ee4de35"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c48f3fbc3e92c7dd6681a258d22f23adc2eb183c8cb1557d2fcc5a024e80b094"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0503c5b681566e8b722fe8c4c47cce5c7a51f6935d5c7012c4aefe952a35eed"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:734c41f9f57cc28658d98270d3436dba65bed0cfc730d115b290e970150c540d"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a5d7ed104d158c0042a6a73799cf0eb576dfd5fc1ace9c47996e52320c37cb7c"}, + {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e3df0bc35e746cce42579826b89579d13fd27c3d5319a6afca9893a9b784ff1b"}, + {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:73e0a78a9b843b8c2128028864901f55190401ba38aae685350cf69b98d9f7c9"}, + {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5ed505ec6305abd2c2c9586a7b04fbd4baf42d4d684a9c12ec6110deefe2a063"}, + {file = "rpds_py-0.10.6-cp310-none-win32.whl", hash = "sha256:d97dd44683802000277bbf142fd9f6b271746b4846d0acaf0cefa6b2eaf2a7ad"}, + {file = "rpds_py-0.10.6-cp310-none-win_amd64.whl", hash = "sha256:b455492cab07107bfe8711e20cd920cc96003e0da3c1f91297235b1603d2aca7"}, + {file = "rpds_py-0.10.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e8cdd52744f680346ff8c1ecdad5f4d11117e1724d4f4e1874f3a67598821069"}, + {file = "rpds_py-0.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66414dafe4326bca200e165c2e789976cab2587ec71beb80f59f4796b786a238"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc435d059f926fdc5b05822b1be4ff2a3a040f3ae0a7bbbe672babb468944722"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e7f2219cb72474571974d29a191714d822e58be1eb171f229732bc6fdedf0ac"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3953c6926a63f8ea5514644b7afb42659b505ece4183fdaaa8f61d978754349e"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2bb2e4826be25e72013916eecd3d30f66fd076110de09f0e750163b416500721"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bf347b495b197992efc81a7408e9a83b931b2f056728529956a4d0858608b80"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:102eac53bb0bf0f9a275b438e6cf6904904908562a1463a6fc3323cf47d7a532"}, + {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40f93086eef235623aa14dbddef1b9fb4b22b99454cb39a8d2e04c994fb9868c"}, + {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e22260a4741a0e7a206e175232867b48a16e0401ef5bce3c67ca5b9705879066"}, + {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f4e56860a5af16a0fcfa070a0a20c42fbb2012eed1eb5ceeddcc7f8079214281"}, + {file = "rpds_py-0.10.6-cp311-none-win32.whl", hash = "sha256:0774a46b38e70fdde0c6ded8d6d73115a7c39d7839a164cc833f170bbf539116"}, + {file = "rpds_py-0.10.6-cp311-none-win_amd64.whl", hash = "sha256:4a5ee600477b918ab345209eddafde9f91c0acd931f3776369585a1c55b04c57"}, + {file = "rpds_py-0.10.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:5ee97c683eaface61d38ec9a489e353d36444cdebb128a27fe486a291647aff6"}, + {file = "rpds_py-0.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0713631d6e2d6c316c2f7b9320a34f44abb644fc487b77161d1724d883662e31"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a53f5998b4bbff1cb2e967e66ab2addc67326a274567697379dd1e326bded7"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a555ae3d2e61118a9d3e549737bb4a56ff0cec88a22bd1dfcad5b4e04759175"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:945eb4b6bb8144909b203a88a35e0a03d22b57aefb06c9b26c6e16d72e5eb0f0"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:52c215eb46307c25f9fd2771cac8135d14b11a92ae48d17968eda5aa9aaf5071"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1b3cd23d905589cb205710b3988fc8f46d4a198cf12862887b09d7aaa6bf9b9"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64ccc28683666672d7c166ed465c09cee36e306c156e787acef3c0c62f90da5a"}, + {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:516a611a2de12fbea70c78271e558f725c660ce38e0006f75139ba337d56b1f6"}, + {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9ff93d3aedef11f9c4540cf347f8bb135dd9323a2fc705633d83210d464c579d"}, + {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d858532212f0650be12b6042ff4378dc2efbb7792a286bee4489eaa7ba010586"}, + {file = "rpds_py-0.10.6-cp312-none-win32.whl", hash = "sha256:3c4eff26eddac49d52697a98ea01b0246e44ca82ab09354e94aae8823e8bda02"}, + {file = "rpds_py-0.10.6-cp312-none-win_amd64.whl", hash = "sha256:150eec465dbc9cbca943c8e557a21afdcf9bab8aaabf386c44b794c2f94143d2"}, + {file = "rpds_py-0.10.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:cf693eb4a08eccc1a1b636e4392322582db2a47470d52e824b25eca7a3977b53"}, + {file = "rpds_py-0.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4134aa2342f9b2ab6c33d5c172e40f9ef802c61bb9ca30d21782f6e035ed0043"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e782379c2028a3611285a795b89b99a52722946d19fc06f002f8b53e3ea26ea9"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f6da6d842195fddc1cd34c3da8a40f6e99e4a113918faa5e60bf132f917c247"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a9fe992887ac68256c930a2011255bae0bf5ec837475bc6f7edd7c8dfa254e"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b788276a3c114e9f51e257f2a6f544c32c02dab4aa7a5816b96444e3f9ffc336"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa1afc70a02645809c744eefb7d6ee8fef7e2fad170ffdeacca267fd2674f13"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bddd4f91eede9ca5275e70479ed3656e76c8cdaaa1b354e544cbcf94c6fc8ac4"}, + {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:775049dfa63fb58293990fc59473e659fcafd953bba1d00fc5f0631a8fd61977"}, + {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c6c45a2d2b68c51fe3d9352733fe048291e483376c94f7723458cfd7b473136b"}, + {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0699ab6b8c98df998c3eacf51a3b25864ca93dab157abe358af46dc95ecd9801"}, + {file = "rpds_py-0.10.6-cp38-none-win32.whl", hash = "sha256:ebdab79f42c5961682654b851f3f0fc68e6cc7cd8727c2ac4ffff955154123c1"}, + {file = "rpds_py-0.10.6-cp38-none-win_amd64.whl", hash = "sha256:24656dc36f866c33856baa3ab309da0b6a60f37d25d14be916bd3e79d9f3afcf"}, + {file = "rpds_py-0.10.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:0898173249141ee99ffcd45e3829abe7bcee47d941af7434ccbf97717df020e5"}, + {file = "rpds_py-0.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9e9184fa6c52a74a5521e3e87badbf9692549c0fcced47443585876fcc47e469"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5752b761902cd15073a527b51de76bbae63d938dc7c5c4ad1e7d8df10e765138"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99a57006b4ec39dbfb3ed67e5b27192792ffb0553206a107e4aadb39c5004cd5"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09586f51a215d17efdb3a5f090d7cbf1633b7f3708f60a044757a5d48a83b393"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e225a6a14ecf44499aadea165299092ab0cba918bb9ccd9304eab1138844490b"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2039f8d545f20c4e52713eea51a275e62153ee96c8035a32b2abb772b6fc9e5"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:34ad87a831940521d462ac11f1774edf867c34172010f5390b2f06b85dcc6014"}, + {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dcdc88b6b01015da066da3fb76545e8bb9a6880a5ebf89e0f0b2e3ca557b3ab7"}, + {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:25860ed5c4e7f5e10c496ea78af46ae8d8468e0be745bd233bab9ca99bfd2647"}, + {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7854a207ef77319ec457c1eb79c361b48807d252d94348305db4f4b62f40f7f3"}, + {file = "rpds_py-0.10.6-cp39-none-win32.whl", hash = "sha256:e6fcc026a3f27c1282c7ed24b7fcac82cdd70a0e84cc848c0841a3ab1e3dea2d"}, + {file = "rpds_py-0.10.6-cp39-none-win_amd64.whl", hash = "sha256:e98c4c07ee4c4b3acf787e91b27688409d918212dfd34c872201273fdd5a0e18"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:68fe9199184c18d997d2e4293b34327c0009a78599ce703e15cd9a0f47349bba"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3339eca941568ed52d9ad0f1b8eb9fe0958fa245381747cecf2e9a78a5539c42"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a360cfd0881d36c6dc271992ce1eda65dba5e9368575663de993eeb4523d895f"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:031f76fc87644a234883b51145e43985aa2d0c19b063e91d44379cd2786144f8"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f36a9d751f86455dc5278517e8b65580eeee37d61606183897f122c9e51cef3"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:052a832078943d2b2627aea0d19381f607fe331cc0eb5df01991268253af8417"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:023574366002bf1bd751ebaf3e580aef4a468b3d3c216d2f3f7e16fdabd885ed"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:defa2c0c68734f4a82028c26bcc85e6b92cced99866af118cd6a89b734ad8e0d"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:879fb24304ead6b62dbe5034e7b644b71def53c70e19363f3c3be2705c17a3b4"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:53c43e10d398e365da2d4cc0bcaf0854b79b4c50ee9689652cdc72948e86f487"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3777cc9dea0e6c464e4b24760664bd8831738cc582c1d8aacf1c3f546bef3f65"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:40578a6469e5d1df71b006936ce95804edb5df47b520c69cf5af264d462f2cbb"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:cf71343646756a072b85f228d35b1d7407da1669a3de3cf47f8bbafe0c8183a4"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10f32b53f424fc75ff7b713b2edb286fdbfc94bf16317890260a81c2c00385dc"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81de24a1c51cfb32e1fbf018ab0bdbc79c04c035986526f76c33e3f9e0f3356c"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac17044876e64a8ea20ab132080ddc73b895b4abe9976e263b0e30ee5be7b9c2"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e8a78bd4879bff82daef48c14d5d4057f6856149094848c3ed0ecaf49f5aec2"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78ca33811e1d95cac8c2e49cb86c0fb71f4d8409d8cbea0cb495b6dbddb30a55"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c63c3ef43f0b3fb00571cff6c3967cc261c0ebd14a0a134a12e83bdb8f49f21f"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:7fde6d0e00b2fd0dbbb40c0eeec463ef147819f23725eda58105ba9ca48744f4"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:79edd779cfc46b2e15b0830eecd8b4b93f1a96649bcb502453df471a54ce7977"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9164ec8010327ab9af931d7ccd12ab8d8b5dc2f4c6a16cbdd9d087861eaaefa1"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d29ddefeab1791e3c751e0189d5f4b3dbc0bbe033b06e9c333dca1f99e1d523e"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:30adb75ecd7c2a52f5e76af50644b3e0b5ba036321c390b8e7ec1bb2a16dd43c"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd609fafdcdde6e67a139898196698af37438b035b25ad63704fd9097d9a3482"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6eef672de005736a6efd565577101277db6057f65640a813de6c2707dc69f396"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cf4393c7b41abbf07c88eb83e8af5013606b1cdb7f6bc96b1b3536b53a574b8"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad857f42831e5b8d41a32437f88d86ead6c191455a3499c4b6d15e007936d4cf"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7360573f1e046cb3b0dceeb8864025aa78d98be4bb69f067ec1c40a9e2d9df"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d08f63561c8a695afec4975fae445245386d645e3e446e6f260e81663bfd2e38"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:f0f17f2ce0f3529177a5fff5525204fad7b43dd437d017dd0317f2746773443d"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:442626328600bde1d09dc3bb00434f5374948838ce75c41a52152615689f9403"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e9616f5bd2595f7f4a04b67039d890348ab826e943a9bfdbe4938d0eba606971"}, + {file = "rpds_py-0.10.6.tar.gz", hash = "sha256:4ce5a708d65a8dbf3748d2474b580d606b1b9f91b5c6ab2a316e0b0cf7a4ba50"}, +] [[package]] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" +category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -2619,77 +3086,93 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruamel-yaml" -version = "0.17.31" +version = "0.18.2" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" optional = false python-versions = ">=3" files = [ - {file = "ruamel.yaml-0.17.31-py3-none-any.whl", hash = "sha256:3cf153f0047ced526e723097ac615d3009371779432e304dbd5596b6f3a4c777"}, - {file = "ruamel.yaml-0.17.31.tar.gz", hash = "sha256:098ed1eb6d338a684891a72380277c1e6fc4d4ae0e120de9a447275056dda335"}, + {file = "ruamel.yaml-0.18.2-py3-none-any.whl", hash = "sha256:92076ac8a83dbf44ca661dbed3c935229c8cbc2f10b05959dd3bd5292d8353d3"}, + {file = "ruamel.yaml-0.18.2.tar.gz", hash = "sha256:9bce33f7a814cea4c29a9c62fe872d2363d6220b767891d956eacea8fa5e6fe8"}, ] [package.dependencies] -"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.12\""} +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} [package.extras] -docs = ["ryd"] +docs = ["mercurial (>5.7)", "ryd"] jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] name = "ruamel-yaml-clib" -version = "0.2.7" +version = "0.2.8" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"}, - {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, + {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, + {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, ] [[package]] name = "s3transfer" -version = "0.6.1" +version = "0.7.0" description = "An Amazon S3 Transfer Manager" +category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346"}, - {file = "s3transfer-0.6.1.tar.gz", hash = "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9"}, + {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, + {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, ] [package.dependencies] @@ -2698,41 +3181,16 @@ botocore = ">=1.12.36,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] -[[package]] -name = "secretstorage" -version = "3.3.3" -description = "Python bindings to FreeDesktop.org Secret Service API" -optional = true -python-versions = ">=3.6" -files = [ - {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"}, - {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"}, -] - -[package.dependencies] -cryptography = ">=2.0" -jeepney = ">=0.6" - -[[package]] -name = "semver" -version = "2.13.0" -description = "Python helper for Semantic Versioning (http://semver.org/)" -optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "semver-2.13.0-py2.py3-none-any.whl", hash = "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4"}, - {file = "semver-2.13.0.tar.gz", hash = "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f"}, -] - [[package]] name = "sentry-sdk" -version = "1.25.1" +version = "1.32.0" description = "Python client for Sentry (https://sentry.io)" +category = "main" optional = true python-versions = "*" files = [ - {file = "sentry-sdk-1.25.1.tar.gz", hash = "sha256:aa796423eb6a2f4a8cd7a5b02ba6558cb10aab4ccdc0537f63a47b038c520c38"}, - {file = "sentry_sdk-1.25.1-py2.py3-none-any.whl", hash = "sha256:79afb7c896014038e358401ad1d36889f97a129dfa8031c49b3f238cd1aa3935"}, + {file = "sentry-sdk-1.32.0.tar.gz", hash = "sha256:935e8fbd7787a3702457393b74b13d89a5afb67185bc0af85c00cb27cbd42e7c"}, + {file = "sentry_sdk-1.32.0-py2.py3-none-any.whl", hash = "sha256:eeb0b3550536f3bbc05bb1c7e0feb3a78d74acb43b607159a606ed2ec0a33a4d"}, ] [package.dependencies] @@ -2742,10 +3200,12 @@ urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} [package.extras] aiohttp = ["aiohttp (>=3.5)"] arq = ["arq (>=0.23)"] +asyncpg = ["asyncpg (>=0.23)"] beam = ["apache-beam (>=2.12)"] bottle = ["bottle (>=0.12.13)"] celery = ["celery (>=3)"] chalice = ["chalice (>=1.16.0)"] +clickhouse-driver = ["clickhouse-driver (>=0.2.0)"] django = ["django (>=1.8)"] falcon = ["falcon (>=1.4)"] fastapi = ["fastapi (>=0.79.0)"] @@ -2755,6 +3215,7 @@ httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] loguru = ["loguru (>=0.5)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] +opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] pure-eval = ["asttokens", "executing", "pure-eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] @@ -2768,24 +3229,49 @@ tornado = ["tornado (>=5)"] [[package]] name = "setuptools" -version = "67.8.0" +version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"}, - {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"}, + {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)", "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 (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "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]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +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" +category = "main" +optional = false +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" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2795,34 +3281,37 @@ files = [ [[package]] name = "slack-sdk" -version = "3.21.3" +version = "3.23.0" description = "The Slack API Platform SDK for Python" +category = "main" optional = false python-versions = ">=3.6.0" files = [ - {file = "slack_sdk-3.21.3-py2.py3-none-any.whl", hash = "sha256:de3c07b92479940b61cd68c566f49fbc9974c8f38f661d26244078f3903bb9cc"}, - {file = "slack_sdk-3.21.3.tar.gz", hash = "sha256:20829bdc1a423ec93dac903470975ebf3bc76fd3fd91a4dadc0eeffc940ecb0c"}, + {file = "slack_sdk-3.23.0-py2.py3-none-any.whl", hash = "sha256:2a8513505cced20ceee22b5b49c11d9545caa6234b56bf0ad47133ea5b357d10"}, + {file = "slack_sdk-3.23.0.tar.gz", hash = "sha256:9d6ebc4ff74e7983e1b27dbdb0f2bb6fc3c2a2451694686eaa2be23bbb085a73"}, ] [package.extras] optional = ["SQLAlchemy (>=1.4,<3)", "aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "websocket-client (>=1,<2)", "websockets (>=10,<11)"] -testing = ["Flask (>=1,<2)", "Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (<2)", "black (==22.8.0)", "boto3 (<=2)", "click (==8.0.4)", "databases (>=0.5)", "flake8 (>=5,<6)", "itsdangerous (==1.1.0)", "moto (>=3,<4)", "psutil (>=5,<6)", "pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "pytest-cov (>=2,<3)"] +testing = ["Flask (>=1,<2)", "Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (<2)", "black (==22.8.0)", "boto3 (<=2)", "click (==8.0.4)", "flake8 (>=5,<6)", "itsdangerous (==1.1.0)", "moto (>=3,<4)", "psutil (>=5,<6)", "pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "pytest-cov (>=2,<3)"] [[package]] name = "smmap" -version = "5.0.0" +version = "5.0.1" description = "A pure Python implementation of a sliding window memory map manager" -optional = true -python-versions = ">=3.6" +category = "dev" +optional = false +python-versions = ">=3.7" files = [ - {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, - {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, ] [[package]] name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2834,6 +3323,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -2845,6 +3335,7 @@ files = [ name = "sphinx" version = "4.5.0" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2858,7 +3349,6 @@ babel = ">=1.3" colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} docutils = ">=0.14,<0.18" imagesize = "*" -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} Jinja2 = ">=2.3" packaging = "*" Pygments = ">=2.0" @@ -2880,6 +3370,7 @@ test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] name = "sphinx-autobuild" version = "2021.3.14" description = "Rebuild Sphinx documentation on changes, with live-reload in the browser." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2899,6 +3390,7 @@ test = ["pytest", "pytest-cov"] name = "sphinx-autodoc-typehints" version = "1.19.1" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2917,6 +3409,7 @@ type-comments = ["typed-ast (>=1.5.2)"] name = "sphinx-copybutton" version = "0.4.0" description = "Add a copy button to each of your code cells." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2935,6 +3428,7 @@ rtd = ["ipython", "sphinx", "sphinx-book-theme"] name = "sphinx-design" version = "0.0.13" description = "A sphinx extension for designing beautiful, view size responsive web components." +category = "dev" optional = false python-versions = "~=3.6" files = [ @@ -2958,6 +3452,7 @@ theme-sbt = ["sphinx-book-theme (>=0.1.2,<0.2.0)"] name = "sphinx-immaterial" version = "0.0.post1.dev244" description = "Adaptation of mkdocs-material theme for the Sphinx documentation system" +category = "dev" optional = false python-versions = ">=3.7" files = [] @@ -2988,6 +3483,7 @@ resolved_reference = "fd9fce24f294e3c10f76b4d6879256c159ed4b98" name = "sphinx-jinja" version = "2.0.2" description = "includes jinja templates in a documentation" +category = "dev" optional = false python-versions = ">=3.6,<4" files = [] @@ -3008,6 +3504,7 @@ resolved_reference = "93cd0f883707e6b755a9d1b330ec35517548cdd2" name = "sphinx-reredirects" version = "0.1.2" description = "Handles redirects for moved pages in Sphinx documentation projects" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3020,13 +3517,14 @@ sphinx = "*" [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.2" -description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" +version = "1.0.4" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, - {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, + {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, + {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, ] [package.extras] @@ -3037,6 +3535,7 @@ test = ["pytest"] name = "sphinxcontrib-details-directive" version = "0.1.0" description = "\"details\" directive for Sphinx" +category = "dev" optional = false python-versions = "*" files = [ @@ -3054,6 +3553,7 @@ test = ["flake8", "flake8-import-order", "mypy", "pytest", "tox"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3067,13 +3567,14 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.0" +version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, - {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, + {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, + {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, ] [package.extras] @@ -3084,6 +3585,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-images" version = "0.9.4" description = "Sphinx extension for thumbnails" +category = "dev" optional = false python-versions = "*" files = [ @@ -3099,6 +3601,7 @@ sphinx = {version = ">=2.0", markers = "python_version >= \"3.0\""} name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3113,6 +3616,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-mermaid" version = "0.7.1" description = "Mermaid diagrams in yours Sphinx powered docs" +category = "dev" optional = false python-versions = "*" files = [ @@ -3124,6 +3628,7 @@ files = [ name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3139,6 +3644,7 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3152,24 +3658,86 @@ test = ["pytest"] [[package]] name = "storage3" -version = "0.5.2" +version = "0.6.1" description = "Supabase Storage client for Python." +category = "main" optional = true python-versions = ">=3.8,<4.0" files = [ - {file = "storage3-0.5.2-py3-none-any.whl", hash = "sha256:3aaba8cebf89eef6b5fc48739b8c8c8539461f2eed9ea1dc4c763dea10c6d009"}, - {file = "storage3-0.5.2.tar.gz", hash = "sha256:e9932fca869a8f9cdab9a20e5249439928cfe2d07c4524141b15fef1882a7f61"}, + {file = "storage3-0.6.1-py3-none-any.whl", hash = "sha256:0a8b8dc08f4d2268c8f46035fffcb13be99ed489bd0be29786f979c42f5a7169"}, + {file = "storage3-0.6.1.tar.gz", hash = "sha256:7f50c2279da604c3c088fc72f6d10fee146e30fe9ecbf9d505cea5c884622700"}, ] [package.dependencies] -httpx = ">=0.23,<0.24" +httpx = ">=0.24,<0.26" python-dateutil = ">=2.8.2,<3.0.0" typing-extensions = ">=4.2.0,<5.0.0" +[[package]] +name = "streamlit" +version = "1.28.0" +description = "A faster way to build and share data apps" +category = "dev" +optional = false +python-versions = ">=3.8, !=3.9.7" +files = [ + {file = "streamlit-1.28.0-py2.py3-none-any.whl", hash = "sha256:6827f14fe4a2658851b25de70ccf5e4aa25650a029ba4f0a9cc6fc2ba2a1b97d"}, + {file = "streamlit-1.28.0.tar.gz", hash = "sha256:be6fd240e290be2a79857b1ad7822b53a3c90f15cf6ce97d89ebf4d802d7edb1"}, +] + +[package.dependencies] +altair = ">=4.0,<6" +blinker = ">=1.0.0,<2" +cachetools = ">=4.0,<6" +click = ">=7.0,<9" +gitpython = ">=3.0.7,<3.1.19 || >3.1.19,<4" +importlib-metadata = ">=1.4,<7" +numpy = ">=1.19.3,<2" +packaging = ">=16.8,<24" +pandas = ">=1.3.0,<3" +pillow = ">=7.1.0,<11" +protobuf = ">=3.20,<5" +pyarrow = ">=6.0" +pydeck = ">=0.8.0b4,<1" +python-dateutil = ">=2.7.3,<3" +requests = ">=2.27,<3" +rich = ">=10.14.0,<14" +tenacity = ">=8.1.0,<9" +toml = ">=0.10.1,<2" +tornado = ">=6.0.3,<7" +typing-extensions = ">=4.3.0,<5" +tzlocal = ">=1.1,<6" +validators = ">=0.2,<1" +watchdog = {version = ">=2.1.5", markers = "platform_system != \"Darwin\""} + +[package.extras] +snowflake = ["snowflake-connector-python (>=2.8.0)", "snowflake-snowpark-python (>=0.9.0)"] + +[[package]] +name = "streamlit-pydantic" +version = "0.6.0" +description = "Auto-generate Streamlit UI from Pydantic Models & Dataclasses." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "streamlit-pydantic-0.6.0.tar.gz", hash = "sha256:3bc5d51af085eb6791b360f569f1a541681ddcc51579b09a1e2ab54639b39d49"}, + {file = "streamlit_pydantic-0.6.0-py3-none-any.whl", hash = "sha256:7a69ec6519f5de1b21bd9737891c61d8fea33d7727824ab19c4c65d49f136304"}, +] + +[package.dependencies] +importlib-resources = "*" +pydantic = ">=1.9" +streamlit = ">=1.14.0" + +[package.extras] +dev = ["black", "build", "colorama", "flake8", "isort", "lazydocs", "mypy", "pydocstyle", "pytest", "pytest-cov", "pytest-mock", "rope", "setuptools", "twine", "types-dataclasses", "universal-build", "wheel"] + [[package]] name = "strenum" version = "0.4.15" description = "An Enum that inherits from str." +category = "main" optional = true python-versions = "*" files = [ @@ -3184,42 +3752,44 @@ test = ["pylint", "pytest", "pytest-black", "pytest-cov", "pytest-pylint"] [[package]] name = "supabase" -version = "1.0.3" +version = "1.2.0" description = "Supabase client for Python." +category = "main" optional = true python-versions = ">=3.8,<4.0" files = [ - {file = "supabase-1.0.3-py3-none-any.whl", hash = "sha256:2418113b7f503522d33fafd442e587356636bad6cb803f7e406e614acf2611d7"}, - {file = "supabase-1.0.3.tar.gz", hash = "sha256:c6eac0144b4236a61ccc72024a8e88d8f08979e47ea635307afae7fb4fc24bc6"}, + {file = "supabase-1.2.0-py3-none-any.whl", hash = "sha256:1549600a3965d64de97f2eb37e4e562b7d171383f439ceaab881c5cd6a79e9f7"}, + {file = "supabase-1.2.0.tar.gz", hash = "sha256:2597ef8ec6af973b9c9e94849204f43f47bb5f46d8c65a0c7a6bdf95ad018704"}, ] [package.dependencies] -gotrue = ">=1.0.1,<2.0.0" -httpx = ">=0.23.0,<0.24.0" -postgrest = ">=0.10.6,<0.11.0" -python-semantic-release = "7.33.2" +gotrue = ">=1.0.4,<2.0.0" +httpx = ">=0.24.0,<0.25.0" +postgrest = ">=0.10.8,<0.12.0" realtime = ">=1.0.0,<2.0.0" -storage3 = ">=0.5.2,<0.6.0" -supafunc = ">=0.2.2,<0.3.0" +storage3 = ">=0.5.3,<0.7.0" +supafunc = ">=0.2.3,<0.3.0" [[package]] name = "supafunc" -version = "0.2.2" +version = "0.2.3" description = "Library for Supabase Functions" +category = "main" optional = true -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8,<4.0" files = [ - {file = "supafunc-0.2.2-py3-none-any.whl", hash = "sha256:a292812532cca05afc08d2cc040eea5bd79a8909e46051630620b67508070795"}, - {file = "supafunc-0.2.2.tar.gz", hash = "sha256:84f1f8d47297b0c8b712f1d8e20843406c025a203bba00cb7216e2163f295c24"}, + {file = "supafunc-0.2.3-py3-none-any.whl", hash = "sha256:4124773799682207d0c6ed90b72271f717373977f7de9d12a641bf32f8e13897"}, + {file = "supafunc-0.2.3.tar.gz", hash = "sha256:b23ec2559bcd56ad74fec42cf9dd28c131ba1f00b5ba21853557ed8960891a9b"}, ] [package.dependencies] -httpx = ">=0.23.0,<0.24.0" +httpx = ">=0.24.0,<0.25.0" [[package]] name = "tabulate" version = "0.8.10" description = "Pretty-print tabular data" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3232,13 +3802,14 @@ widechars = ["wcwidth"] [[package]] name = "tenacity" -version = "8.2.2" +version = "8.2.3" description = "Retry code until it succeeds" +category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "tenacity-8.2.2-py3-none-any.whl", hash = "sha256:2f277afb21b851637e8f52e6a613ff08734c347dc19ade928e519d7d2d8569b0"}, - {file = "tenacity-8.2.2.tar.gz", hash = "sha256:43af037822bd0029025877f3b2d97cc4d7bb0c2991000a3d59d71517c5c969e0"}, + {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, + {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, ] [package.extras] @@ -3248,6 +3819,7 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] name = "tinycss" version = "0.4" description = "tinycss is a complete yet simple CSS parser for Python." +category = "dev" optional = false python-versions = "*" files = [ @@ -3261,6 +3833,7 @@ test = ["pytest-cov", "pytest-flake8", "pytest-isort", "pytest-runner"] name = "tinycss2" version = "1.2.1" description = "A tiny CSS parser" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3279,6 +3852,7 @@ test = ["flake8", "isort", "pytest"] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3290,6 +3864,7 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3298,83 +3873,43 @@ files = [ ] [[package]] -name = "tomlkit" -version = "0.11.8" -description = "Style preserving TOML library" -optional = true -python-versions = ">=3.7" +name = "toolz" +version = "0.12.0" +description = "List processing tools and functional utilities" +category = "dev" +optional = false +python-versions = ">=3.5" files = [ - {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, - {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, + {file = "toolz-0.12.0-py3-none-any.whl", hash = "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f"}, + {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, ] [[package]] name = "tornado" -version = "6.2" +version = "6.3.3" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "dev" optional = false -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"}, - {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"}, - {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"}, - {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"}, - {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"}, - {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"}, - {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"}, + {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"}, ] -[[package]] -name = "tqdm" -version = "4.65.0" -description = "Fast, Extensible Progress Meter" -optional = true -python-versions = ">=3.7" -files = [ - {file = "tqdm-4.65.0-py3-none-any.whl", hash = "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"}, - {file = "tqdm-4.65.0.tar.gz", hash = "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -dev = ["py-make (>=0.1.0)", "twine", "wheel"] -notebook = ["ipywidgets (>=6)"] -slack = ["slack-sdk"] -telegram = ["requests"] - -[[package]] -name = "twine" -version = "3.8.0" -description = "Collection of utilities for publishing packages on PyPI" -optional = true -python-versions = ">=3.6" -files = [ - {file = "twine-3.8.0-py3-none-any.whl", hash = "sha256:d0550fca9dc19f3d5e8eadfce0c227294df0a2a951251a4385797c8a6198b7c8"}, - {file = "twine-3.8.0.tar.gz", hash = "sha256:8efa52658e0ae770686a13b675569328f1fba9837e5de1867bfe5f46a9aefe19"}, -] - -[package.dependencies] -colorama = ">=0.4.3" -importlib-metadata = ">=3.6" -keyring = ">=15.1" -pkginfo = ">=1.8.1" -readme-renderer = ">=21.0" -requests = ">=2.20" -requests-toolbelt = ">=0.8.0,<0.9.0 || >0.9.0" -rfc3986 = ">=1.4.0" -tqdm = ">=4.14" -urllib3 = ">=1.26.0" - [[package]] name = "typer" version = "0.4.2" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3393,30 +3928,33 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6. [[package]] name = "types-cachetools" -version = "5.3.0.5" +version = "5.3.0.7" description = "Typing stubs for cachetools" +category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "types-cachetools-5.3.0.5.tar.gz", hash = "sha256:67fa46d51a650896770aee0ba80f0e61dc4a7d1373198eec1bc0622263eaa256"}, - {file = "types_cachetools-5.3.0.5-py3-none-any.whl", hash = "sha256:c0c5fa00199017d974c935bf043c467d5204e4f835141e489b48765b5ac1d960"}, + {file = "types-cachetools-5.3.0.7.tar.gz", hash = "sha256:27c982cdb9cf3fead8b0089ee6b895715ecc99dac90ec29e2cab56eb1aaf4199"}, + {file = "types_cachetools-5.3.0.7-py3-none-any.whl", hash = "sha256:98c069dc7fc087b1b061703369c80751b0a0fc561f6fb072b554e5eee23773a0"}, ] [[package]] name = "types-click-spinner" -version = "0.1.13.4" +version = "0.1.13.5" description = "Typing stubs for click-spinner" +category = "dev" optional = false python-versions = "*" files = [ - {file = "types-click-spinner-0.1.13.4.tar.gz", hash = "sha256:c2dbfbff911b827e03f73966ceaa284a14e4a7e64a6e84abdf517f09d6b93f49"}, - {file = "types_click_spinner-0.1.13.4-py3-none-any.whl", hash = "sha256:ffe4a009a88ea1b17d5d40ee2fbf205f2533d67657367c570d36444c99dc7c47"}, + {file = "types-click-spinner-0.1.13.5.tar.gz", hash = "sha256:6d6471916d26ac3c6d3c25e1f304d6ac6bb205cda293731bca266591f0030b76"}, + {file = "types_click_spinner-0.1.13.5-py3-none-any.whl", hash = "sha256:f42bfc90f047a7f66d918b3e5d0069c42f8a3d4fb0a804a258c086f16cbb20b7"}, ] [[package]] name = "types-pytz" version = "2022.7.1.2" description = "Typing stubs for pytz" +category = "dev" optional = false python-versions = "*" files = [ @@ -3426,33 +3964,36 @@ files = [ [[package]] name = "types-pyyaml" -version = "6.0.12.10" +version = "6.0.12.12" description = "Typing stubs for PyYAML" +category = "dev" optional = false python-versions = "*" files = [ - {file = "types-PyYAML-6.0.12.10.tar.gz", hash = "sha256:ebab3d0700b946553724ae6ca636ea932c1b0868701d4af121630e78d695fc97"}, - {file = "types_PyYAML-6.0.12.10-py3-none-any.whl", hash = "sha256:662fa444963eff9b68120d70cda1af5a5f2aa57900003c2006d7626450eaae5f"}, + {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"}, + {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"}, ] [[package]] name = "types-requests" -version = "2.31.0.1" +version = "2.31.0.10" description = "Typing stubs for requests" +category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "types-requests-2.31.0.1.tar.gz", hash = "sha256:3de667cffa123ce698591de0ad7db034a5317457a596eb0b4944e5a9d9e8d1ac"}, - {file = "types_requests-2.31.0.1-py3-none-any.whl", hash = "sha256:afb06ef8f25ba83d59a1d424bd7a5a939082f94b94e90ab5e6116bd2559deaa3"}, + {file = "types-requests-2.31.0.10.tar.gz", hash = "sha256:dc5852a76f1eaf60eafa81a2e50aefa3d1f015c34cf0cba130930866b1b22a92"}, + {file = "types_requests-2.31.0.10-py3-none-any.whl", hash = "sha256:b32b9a86beffa876c0c3ac99a4cd3b8b51e973fb8e3bd4e0a6bb32c7efad80fc"}, ] [package.dependencies] -types-urllib3 = "*" +urllib3 = ">=2" [[package]] name = "types-tabulate" version = "0.8.11" description = "Typing stubs for tabulate" +category = "dev" optional = false python-versions = "*" files = [ @@ -3462,41 +4003,33 @@ files = [ [[package]] name = "types-toml" -version = "0.10.8.6" +version = "0.10.8.7" description = "Typing stubs for toml" +category = "dev" optional = false python-versions = "*" files = [ - {file = "types-toml-0.10.8.6.tar.gz", hash = "sha256:6d3ac79e36c9ee593c5d4fb33a50cca0e3adceb6ef5cff8b8e5aef67b4c4aaf2"}, - {file = "types_toml-0.10.8.6-py3-none-any.whl", hash = "sha256:de7b2bb1831d6f7a4b554671ffe5875e729753496961b3e9b202745e4955dafa"}, -] - -[[package]] -name = "types-urllib3" -version = "1.26.25.13" -description = "Typing stubs for urllib3" -optional = false -python-versions = "*" -files = [ - {file = "types-urllib3-1.26.25.13.tar.gz", hash = "sha256:3300538c9dc11dad32eae4827ac313f5d986b8b21494801f1bf97a1ac6c03ae5"}, - {file = "types_urllib3-1.26.25.13-py3-none-any.whl", hash = "sha256:5dbd1d2bef14efee43f5318b5d36d805a489f6600252bb53626d4bfafd95e27c"}, + {file = "types-toml-0.10.8.7.tar.gz", hash = "sha256:58b0781c681e671ff0b5c0319309910689f4ab40e8a2431e205d70c94bb6efb1"}, + {file = "types_toml-0.10.8.7-py3-none-any.whl", hash = "sha256:61951da6ad410794c97bec035d59376ce1cbf4453dc9b6f90477e81e4442d631"}, ] [[package]] name = "typing-extensions" -version = "4.6.3" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] [[package]] name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" +category = "main" optional = false python-versions = ">=2" files = [ @@ -3506,63 +4039,90 @@ files = [ [[package]] name = "tzlocal" -version = "5.0.1" +version = "5.2" description = "tzinfo object for the local timezone" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tzlocal-5.0.1-py3-none-any.whl", hash = "sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f"}, - {file = "tzlocal-5.0.1.tar.gz", hash = "sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803"}, + {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, + {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] [[package]] name = "urllib3" -version = "1.26.16" +version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7" files = [ - {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, - {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "validators" +version = "0.22.0" +description = "Python Data Validation for Humans™" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "validators-0.22.0-py3-none-any.whl", hash = "sha256:61cf7d4a62bbae559f2e54aed3b000cea9ff3e2fdbe463f51179b92c58c9585a"}, + {file = "validators-0.22.0.tar.gz", hash = "sha256:77b2689b172eeeb600d9605ab86194641670cdb73b60afd577142a9397873370"}, +] + +[package.extras] +docs-offline = ["myst-parser (>=2.0.0)", "pypandoc-binary (>=1.11)", "sphinx (>=7.1.1)"] +docs-online = ["mkdocs (>=1.5.2)", "mkdocs-git-revision-date-localized-plugin (>=1.2.0)", "mkdocs-material (>=9.2.6)", "mkdocstrings[python] (>=0.22.0)", "pyaml (>=23.7.0)"] +hooks = ["pre-commit (>=3.3.3)"] +package = ["build (>=1.0.0)", "twine (>=4.0.2)"] +runner = ["tox (>=4.11.1)"] +sast = ["bandit[toml] (>=1.7.5)"] +testing = ["pytest (>=7.4.0)"] +tooling = ["black (>=23.7.0)", "pyright (>=1.1.325)", "ruff (>=0.0.287)"] +tooling-extras = ["pyaml (>=23.7.0)", "pypandoc-binary (>=1.11)", "pytest (>=7.4.0)"] [[package]] name = "virtualenv" -version = "20.23.0" +version = "20.24.6" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, - {file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, + {file = "virtualenv-20.24.6-py3-none-any.whl", hash = "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381"}, + {file = "virtualenv-20.24.6.tar.gz", hash = "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af"}, ] [package.dependencies] -distlib = ">=0.3.6,<1" -filelock = ">=3.11,<4" -platformdirs = ">=3.2,<4" +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<4" [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.7.1)", "time-machine (>=2.9)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "watchdog" version = "2.3.1" description = "Filesystem events monitoring" -optional = true +category = "main" +optional = false python-versions = ">=3.6" files = [ {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1f1200d4ec53b88bf04ab636f9133cb703eb19768a39351cee649de21a33697"}, @@ -3602,6 +4162,7 @@ watchmedo = ["PyYAML (>=3.10)"] name = "watchgod" version = "0.7" description = "Simple, modern file watching and code reload in python." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3613,6 +4174,7 @@ files = [ name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" +category = "main" optional = true python-versions = "*" files = [ @@ -3624,6 +4186,7 @@ files = [ name = "webexteamssdk" version = "1.6.1" description = "Community-developed Python SDK for the Webex Teams APIs" +category = "main" optional = false python-versions = "*" files = [ @@ -3641,6 +4204,7 @@ requests-toolbelt = "*" name = "websocket-client" version = "1.3.3" description = "WebSocket client for Python with low level API options" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3657,6 +4221,7 @@ test = ["websockets"] name = "websockets" version = "10.4" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3733,37 +4298,24 @@ files = [ [[package]] name = "werkzeug" -version = "1.0.1" +version = "2.1.2" description = "The comprehensive WSGI web application library." -optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"}, - {file = "Werkzeug-1.0.1.tar.gz", hash = "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"}, -] - -[package.extras] -dev = ["coverage", "pallets-sphinx-themes", "pytest", "pytest-timeout", "sphinx", "sphinx-issues", "tox"] -watchdog = ["watchdog"] - -[[package]] -name = "wheel" -version = "0.40.0" -description = "A built-package format for Python" +category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "wheel-0.40.0-py3-none-any.whl", hash = "sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247"}, - {file = "wheel-0.40.0.tar.gz", hash = "sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873"}, + {file = "Werkzeug-2.1.2-py3-none-any.whl", hash = "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255"}, + {file = "Werkzeug-2.1.2.tar.gz", hash = "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6"}, ] [package.extras] -test = ["pytest (>=6.0.0)"] +watchdog = ["watchdog"] [[package]] name = "witchhazel" version = "2018.8.23" description = "A dark & feminine color scheme for Pygments" +category = "dev" optional = false python-versions = "*" files = [ @@ -3773,23 +4325,24 @@ files = [ [[package]] name = "zipp" -version = "3.15.0" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] all = ["CairoSVG", "Flask", "better-exceptions", "datadog-api-client", "dulwich", "grafana-api", "kafka-python", "poetry-core", "sentry-sdk", "supabase", "tabulate", "watchdog"] [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "66c5ed18a5753cc531dd14129daa38899ced443d6065a933366f19108adce144" +python-versions = "^3.10" +content-hash = "fc8c4c33897810f35c72a92848524362b62ee66e108c02be4ec84d2f35e5b6e9" From ab0195a71b72ee3e54f5e903a58a16e6b65e74c4 Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Fri, 27 Oct 2023 13:39:36 +0530 Subject: [PATCH 13/36] Fixed session_state code and variable name --- scripts/main_app.py | 13 ++++++----- scripts/pages/demo_playbooks.py | 4 ++-- scripts/pages/playbook_builder.py | 36 ++++++++++++------------------- 3 files changed, 22 insertions(+), 31 deletions(-) diff --git a/scripts/main_app.py b/scripts/main_app.py index 7552ae6bc..280d7c5b0 100644 --- a/scripts/main_app.py +++ b/scripts/main_app.py @@ -1,15 +1,14 @@ -import streamlit as st from pages import demo_playbooks, playbook_builder from streamlit import session_state as ss -if "current_page" not in st.session_state: - st.session_state["current_page"] = "demo_playbooks" +if "current_page" not in ss: + ss["current_page"] = "demo_playbooks" -if "playbook_choosen" not in st.session_state: - ss.playbook_choosen = False +if "playbook_chosen" not in ss: + ss.playbook_chosen = False -if st.session_state.current_page == "demo_playbooks" and not ss.playbook_choosen: +if ss.current_page == "demo_playbooks" and not ss.playbook_chosen: demo_playbooks.display_demo_playbook() -elif st.session_state.current_page == "playbook_builder": +elif ss.current_page == "playbook_builder": playbook_builder.display_playbook_builder() diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py index 5cd81dacf..d94734eb9 100644 --- a/scripts/pages/demo_playbooks.py +++ b/scripts/pages/demo_playbooks.py @@ -5,7 +5,7 @@ def update_changes(): ss.current_page = "playbook_builder" ss.expander_state = [False, False, False, False, True] - ss.playbook_choosen = True + ss.playbook_chosen = True def release_fail_options(): @@ -34,7 +34,7 @@ def display_demo_playbook(): ) st.title("Demo Playbooks", anchor=None) - if "expander_state" not in st.session_state: + if "expander_state" not in ss: ss.expander_state = [True, False, False, False, False] if "triggers" not in ss: ss.triggers = "" diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py index 30800ff67..789d00234 100644 --- a/scripts/pages/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -1,18 +1,13 @@ -# run with poetry run streamlit run scripts/playbook_builder.py +# run with poetry run streamlit run scripts/main_app.py or use the streamlit.Dockerfile from collections import OrderedDict import streamlit as st import streamlit_pydantic as sp import yaml +from streamlit import session_state as ss -# from robusta.api import Action from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions -# from streamlit import session_state as ss - - -# from typing import List, Optional -# from pydantic import BaseModel, Field generator = ExamplesGenerator() triggers = generator.get_all_triggers() actions = find_playbook_actions("./playbooks/robusta_playbooks") @@ -23,20 +18,20 @@ def display_playbook_builder(): st.title(":wrench: Playbook Builder", anchor=None) - if "expander_state" not in st.session_state: - st.session_state.expander_state = [True, False, False, False, False] + if "expander_state" not in ss: + ss.expander_state = [True, False, False, False, False] # INITIALIZING ALL EXPANDERS trigger_expander = st.expander( - ":zap: Trigger - A trigger is an event that starts your Playbook", expanded=st.session_state.expander_state[0] + ":zap: Trigger - A trigger is an event that starts your Playbook", expanded=ss.expander_state[0] ) - trigger_parameter_expander = st.expander("Configure Trigger", expanded=st.session_state.expander_state[1]) + trigger_parameter_expander = st.expander("Configure Trigger", expanded=ss.expander_state[1]) action_expander = st.expander( ":boom: Action - An action is an event a Playbook performs after it starts", - expanded=st.session_state.expander_state[2], + expanded=ss.expander_state[2], ) - action_parameter_expander = st.expander("Configure Action", expanded=st.session_state.expander_state[3]) - playbook_expander = st.expander(":scroll: Playbook", expanded=st.session_state.expander_state[4]) + action_parameter_expander = st.expander("Configure Action", expanded=ss.expander_state[3]) + playbook_expander = st.expander(":scroll: Playbook", expanded=ss.expander_state[4]) # TRIGGER with trigger_expander: @@ -44,7 +39,7 @@ def display_playbook_builder(): trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") if st.button("Continue", key="button1"): - st.session_state.expander_state = [False, True, False, False, False] + ss.expander_state = [False, True, False, False, False] st.experimental_rerun() # TRIGGER PARAMETER @@ -53,7 +48,7 @@ def display_playbook_builder(): trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) if st.button("Continue", key="button2"): - st.session_state.expander_state = [False, False, True, False, False] + ss.expander_state = [False, False, True, False, False] st.experimental_rerun() # ACTION @@ -61,10 +56,8 @@ def display_playbook_builder(): relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] action_name = st.selectbox("Choose an action", relevant_actions, key="actions") - # st.markdown[action_name]["about"]) - if st.button("Continue", key="button3"): - st.session_state.expander_state = [False, False, False, True, False] + ss.expander_state = [False, False, False, True, False] st.experimental_rerun() # ACTION PARAMETER @@ -74,11 +67,11 @@ def display_playbook_builder(): if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) if st.button("Continue", key="button4"): - st.session_state.expander_state = [False, False, False, False, True] + ss.expander_state = [False, False, False, False, True] st.experimental_rerun() else: st.markdown("This action doesn't have any parameters") - st.session_state.expander_state = [False, False, False, False, True] + ss.expander_state = [False, False, False, False, True] action_data = None # DISPLAY PLAYBOOK @@ -108,4 +101,3 @@ def display_playbook_builder(): ) st.code(yaml.dump(playbook)) - # st.experimental_rerun() From 9e06e99af7c19991a512abd4bbc823040fdb729a Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Fri, 27 Oct 2023 15:38:25 +0530 Subject: [PATCH 14/36] Removed extra methods, updated session variables, added a back button --- scripts/main_app.py | 2 +- scripts/pages/demo_playbooks.py | 48 ++++++++++++++----------------- scripts/pages/playbook_builder.py | 12 +++++++- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/scripts/main_app.py b/scripts/main_app.py index 280d7c5b0..f1cf6d3ad 100644 --- a/scripts/main_app.py +++ b/scripts/main_app.py @@ -2,7 +2,7 @@ from streamlit import session_state as ss if "current_page" not in ss: - ss["current_page"] = "demo_playbooks" + ss.current_page = "demo_playbooks" if "playbook_chosen" not in ss: ss.playbook_chosen = False diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py index d94734eb9..1e8a4b08d 100644 --- a/scripts/pages/demo_playbooks.py +++ b/scripts/pages/demo_playbooks.py @@ -2,30 +2,14 @@ from streamlit import session_state as ss -def update_changes(): +def update_changes(trigger, action): + ss.trigger = trigger + ss.action = action ss.current_page = "playbook_builder" ss.expander_state = [False, False, False, False, True] ss.playbook_chosen = True -def release_fail_options(): - ss.trigger = "on_helm_release_fail" - ss.actions = "helm_status_enricher" - update_changes() - - -def deployment_change_options(): - ss.trigger = "on_deployment_update" - ss.actions = "resource_babysitter" - update_changes() - - -def ingress_change_options(): - ss.trigger = "on_ingress_all_changes" - ss.actions = "resource_babysitter" - update_changes() - - def display_demo_playbook(): st.set_page_config( @@ -36,10 +20,10 @@ def display_demo_playbook(): if "expander_state" not in ss: ss.expander_state = [True, False, False, False, False] - if "triggers" not in ss: - ss.triggers = "" - if "actions" not in ss: - ss.actions = "" + if "trigger" not in ss: + ss.trigger = "" + if "action" not in ss: + ss.action = "" release_fail_expander = st.expander(":zap: Get notified when a Helm release fails", expanded=False) deployment_change_expander = st.expander(":zap: Get notified when a deployment changes", expanded=False) @@ -50,18 +34,30 @@ def display_demo_playbook(): "on_helm_release_fail is triggered when a Helm release enters a failed state. This is a one-time trigger, meaning that it only fires once when the release fails." ) st.image("./docs/images/helm-release-failed.png") - st.button("Use Playbook", key="but_release_fail", on_click=release_fail_options) + st.button( + "Use Playbook", + key="but_release_fail", + on_click=lambda: update_changes("on_helm_release_fail", "helm_status_enricher"), + ) with deployment_change_expander: st.markdown( "on_deployment_update is triggered for every deployment updated. When this happens the resource_babysitter action sends you the changed field and details of what changed." ) st.image("./docs/images/deployment-image-change.png") - st.button("Use Playbook", key="but_deploy_change", on_click=deployment_change_options) + st.button( + "Use Playbook", + key="but_deploy_change", + on_click=lambda: update_changes("on_deployment_update", "resource_babysitter"), + ) with ingress_change_expander: st.markdown( "on_ingress_all_changes is triggered for every change in an ingress. The resource_babysitter action sends you the changed field and details of what changed." ) st.image("./docs/images/ingress-image-change.png") - st.button("Use Playbook", key="but_ingress_change", on_click=ingress_change_options) + st.button( + "Use Playbook", + key="but_ingress_change", + on_click=lambda: update_changes("on_ingress_all_changes", "resource_babysitter"), + ) diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py index 789d00234..2dc57f242 100644 --- a/scripts/pages/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -15,8 +15,18 @@ triggers_to_actions = generator.get_triggers_to_actions(actions) +def go_back(): + + for key in st.session_state.keys(): + if key != "current_page": + del st.session_state[key] + ss.current_page = "demo_playbooks" + + def display_playbook_builder(): + st.button(":point_left: Choose a Playbook", key="choose_playbook", on_click=go_back) + st.title(":wrench: Playbook Builder", anchor=None) if "expander_state" not in ss: ss.expander_state = [True, False, False, False, False] @@ -54,7 +64,7 @@ def display_playbook_builder(): # ACTION with action_expander: relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] - action_name = st.selectbox("Choose an action", relevant_actions, key="actions") + action_name = st.selectbox("Choose an action", relevant_actions, key="action") if st.button("Continue", key="button3"): ss.expander_state = [False, False, False, True, False] From f8ba263520a441faf1224cd43a624dbb9ef772e0 Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Fri, 27 Oct 2023 15:57:53 +0530 Subject: [PATCH 15/36] Updated deprecated code --- scripts/pages/playbook_builder.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py index 2dc57f242..d0f11722c 100644 --- a/scripts/pages/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -50,7 +50,7 @@ def display_playbook_builder(): if st.button("Continue", key="button1"): ss.expander_state = [False, True, False, False, False] - st.experimental_rerun() + st.rerun() # TRIGGER PARAMETER with trigger_parameter_expander: @@ -59,7 +59,7 @@ def display_playbook_builder(): if st.button("Continue", key="button2"): ss.expander_state = [False, False, True, False, False] - st.experimental_rerun() + st.rerun() # ACTION with action_expander: @@ -68,8 +68,7 @@ def display_playbook_builder(): if st.button("Continue", key="button3"): ss.expander_state = [False, False, False, True, False] - st.experimental_rerun() - + st.rerun() # ACTION PARAMETER with action_parameter_expander: action_obj = actions_by_name.get(action_name, None) @@ -78,7 +77,7 @@ def display_playbook_builder(): action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) if st.button("Continue", key="button4"): ss.expander_state = [False, False, False, False, True] - st.experimental_rerun() + st.rerun() else: st.markdown("This action doesn't have any parameters") ss.expander_state = [False, False, False, False, True] From 18ccbd11a98d4f6825496e493727dbb8976d264a Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sat, 28 Oct 2023 21:49:58 +0300 Subject: [PATCH 16/36] simplify logic for expander_state --- scripts/pages/demo_playbooks.py | 3 -- scripts/pages/playbook_builder.py | 63 +++++++++++++++++-------------- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py index 1e8a4b08d..0c19afb9a 100644 --- a/scripts/pages/demo_playbooks.py +++ b/scripts/pages/demo_playbooks.py @@ -6,7 +6,6 @@ def update_changes(trigger, action): ss.trigger = trigger ss.action = action ss.current_page = "playbook_builder" - ss.expander_state = [False, False, False, False, True] ss.playbook_chosen = True @@ -18,8 +17,6 @@ def display_demo_playbook(): ) st.title("Demo Playbooks", anchor=None) - if "expander_state" not in ss: - ss.expander_state = [True, False, False, False, False] if "trigger" not in ss: ss.trigger = "" if "action" not in ss: diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py index d0f11722c..e8ea22796 100644 --- a/scripts/pages/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -1,5 +1,6 @@ # run with poetry run streamlit run scripts/main_app.py or use the streamlit.Dockerfile from collections import OrderedDict +from enum import Enum import streamlit as st import streamlit_pydantic as sp @@ -16,76 +17,82 @@ def go_back(): - for key in st.session_state.keys(): if key != "current_page": del st.session_state[key] ss.current_page = "demo_playbooks" -def display_playbook_builder(): +class ExpanderState (Enum): + TRIGGER = 1 + TRIGGER_PARAMS = 2 + ACTION = 3 + ACTION_PARAMS = 4 + YAML = 5 - st.button(":point_left: Choose a Playbook", key="choose_playbook", on_click=go_back) +def set_expander_state(state: ExpanderState): + ss.expander_state=state + + +def display_playbook_builder(): + st.button(":point_left: Choose a Playbook", key="choose_playbook", on_click=go_back) st.title(":wrench: Playbook Builder", anchor=None) if "expander_state" not in ss: - ss.expander_state = [True, False, False, False, False] + ss.expander_state = ExpanderState.TRIGGER - # INITIALIZING ALL EXPANDERS + print("expander_state is", ss.expander_state) + # initialize expanders trigger_expander = st.expander( - ":zap: Trigger - A trigger is an event that starts your Playbook", expanded=ss.expander_state[0] + ":zap: Trigger - A trigger is an event that starts your Playbook", + expanded=ss.expander_state == ExpanderState.TRIGGER + ) + trigger_parameter_expander = st.expander( + "Configure Trigger", + expanded=ss.expander_state == ExpanderState.TRIGGER_PARAMS ) - trigger_parameter_expander = st.expander("Configure Trigger", expanded=ss.expander_state[1]) action_expander = st.expander( ":boom: Action - An action is an event a Playbook performs after it starts", - expanded=ss.expander_state[2], + expanded=ss.expander_state == ExpanderState.ACTION + ) + action_parameter_expander = st.expander( + "Configure Action", + expanded=ss.expander_state == ExpanderState.ACTION_PARAMS + ) + playbook_expander = st.expander( + ":scroll: Playbook", + expanded=ss.expander_state == ExpanderState.YAML ) - action_parameter_expander = st.expander("Configure Action", expanded=ss.expander_state[3]) - playbook_expander = st.expander(":scroll: Playbook", expanded=ss.expander_state[4]) # TRIGGER with trigger_expander: - trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") - - if st.button("Continue", key="button1"): - ss.expander_state = [False, True, False, False, False] - st.rerun() + st.button("Continue", key="button1", on_click=set_expander_state, args=[ExpanderState.TRIGGER_PARAMS]) # TRIGGER PARAMETER with trigger_parameter_expander: st.header("Available Parameters") trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) - - if st.button("Continue", key="button2"): - ss.expander_state = [False, False, True, False, False] - st.rerun() + st.button("Continue", key="button2", on_click=set_expander_state, args=[ExpanderState.ACTION]) # ACTION with action_expander: relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] action_name = st.selectbox("Choose an action", relevant_actions, key="action") + st.button("Continue", key="button3", on_click=set_expander_state, args=[ExpanderState.ACTION_PARAMS]) - if st.button("Continue", key="button3"): - ss.expander_state = [False, False, False, True, False] - st.rerun() # ACTION PARAMETER with action_parameter_expander: action_obj = actions_by_name.get(action_name, None) - if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) - if st.button("Continue", key="button4"): - ss.expander_state = [False, False, False, False, True] - st.rerun() else: st.markdown("This action doesn't have any parameters") - ss.expander_state = [False, False, False, False, True] action_data = None + st.button("Continue", key="button4", on_click=set_expander_state, args=[ExpanderState.YAML]) # DISPLAY PLAYBOOK with playbook_expander: - st.markdown( "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" ) From 0cce3453f973bfe5773ade8158c5c5bd5bc4b206 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sat, 28 Oct 2023 23:46:52 +0300 Subject: [PATCH 17/36] Improve pydantic models to work better w/ playbooks generator --- scripts/generate_kubernetes_code.py | 22 +- src/robusta/core/model/base_params.py | 4 +- .../core/triggers/helm_releases_triggers.py | 52 +- .../kubernetes/autogenerated/triggers.py | 807 ++++-------------- .../integrations/kubernetes/base_triggers.py | 10 +- .../integrations/prometheus/trigger.py | 21 +- 6 files changed, 207 insertions(+), 709 deletions(-) diff --git a/scripts/generate_kubernetes_code.py b/scripts/generate_kubernetes_code.py index bca5f6e87..ef1531416 100755 --- a/scripts/generate_kubernetes_code.py +++ b/scripts/generate_kubernetes_code.py @@ -338,7 +338,7 @@ def autogenerate_triggers(f: TextIO): f.write( textwrap.dedent( """\ - from typing import Optional, Dict + from typing import Optional, Dict, Literal from pydantic import BaseModel from robusta.integrations.kubernetes.base_triggers import K8sBaseTrigger from robusta.core.model.k8s_operation_type import K8sOperationType @@ -357,14 +357,8 @@ def autogenerate_triggers(f: TextIO): textwrap.dedent( f"""\ class {resource}{get_trigger_class_name(trigger_name)}Trigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind=\"{resource}\", - operation={operation_type}, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = \"{resource}\" + operation: Literal[K8sOperationType] = {operation_type} @staticmethod def get_execution_event_type() -> type: @@ -387,14 +381,8 @@ def get_execution_event_type() -> type: textwrap.dedent( f"""\ class KubernetesAny{get_trigger_class_name(trigger_name)}Trigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind=\"Any\", - operation={operation_type}, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = \"{resource}\" + operation: Literal[K8sOperationType] = {operation_type} @staticmethod def get_execution_event_type() -> type: diff --git a/src/robusta/core/model/base_params.py b/src/robusta/core/model/base_params.py index edef8cc44..959edac19 100644 --- a/src/robusta/core/model/base_params.py +++ b/src/robusta/core/model/base_params.py @@ -195,11 +195,11 @@ class CustomGraphEnricherParams(PrometheusParams): """ :var promql_query: Promql query. You can use $pod, $node and $node_internal_ip to template (see example). For more information, see https://prometheus.io/docs/prometheus/latest/querying/basics/ :var graph_title: A nicer name for the Prometheus query. - :var graph_duration_minutes: Graph duration is minutes. + :var graph_duration_minutes: How many minutes of data to fetch before the current time :var chart_values_format: Customize the y-axis labels with one of: Plain, Bytes, Percentage (see ChartValuesFormat) :example promql_query: instance:node_cpu_utilisation:rate5m{job="node-exporter", instance=~"$node_internal_ip:[0-9]+", cluster=""} != 0 - :example graph_title: CPU Usage for this nod + :example graph_title: CPU Usage for this node """ promql_query: str diff --git a/src/robusta/core/triggers/helm_releases_triggers.py b/src/robusta/core/triggers/helm_releases_triggers.py index f8ee39308..aaa971c47 100644 --- a/src/robusta/core/triggers/helm_releases_triggers.py +++ b/src/robusta/core/triggers/helm_releases_triggers.py @@ -1,10 +1,10 @@ import logging import sys -from typing import Optional, List, Dict +from typing import Optional, List, Dict, Literal from datetime import datetime import pytz from attr import dataclass -from pydantic import BaseModel +from pydantic import BaseModel, Field from robusta.core.model.events import ExecutionBaseEvent from robusta.core.model.helm_release import HelmRelease @@ -13,9 +13,13 @@ from robusta.utils.rate_limiter import RateLimiter from robusta.utils.server_start import ServerStart +# TODO: can we just use a Literal for both versions? Need to check it doesn't break anything UNHEALTHY_STATUSES = ["pending-install", "pending-upgrade", "pending-rollback", "uninstalling"] +UNHEALTHY_STATUSES_LITERAL = Literal["pending-install", "pending-upgrade", "pending-rollback", "uninstalling"] FAILED_STATUSES = ["failed", "unknown"] +FAILED_STATUSES_LITERAL = Literal["failed", "unknown"] DEPLOYED_STATUSES = ["deployed"] +DEPLOYED_STATUSES_LITERAL = Literal["deployed"] class IncomingHelmReleasesEventPayload(BaseModel): """ @@ -56,11 +60,11 @@ def get_aggregation_key(self): class HelmReleaseBaseTrigger(BaseTrigger): - statuses: List[str] - rate_limit: int - names: Optional[List[str]] - namespace: Optional[str] - duration: Optional[int] + statuses: List[str] = Field(description="Helm status this trigger fires on") + rate_limit: int = Field(description="How often should the trigger re-fire if the Helm release remains in this status?") + names: Optional[List[str]] = Field(description="Optional. Only monitor Helm releases with these names.") + namespace: Optional[str] = Field(description="Optional. Only monitor Helm releases in this namespace") + duration: Optional[int] = Field(description="How long must the Helm release be in this status before firing") def get_trigger_event(self): return HelmReleasesTriggerEvent.__name__ @@ -127,40 +131,18 @@ def get_execution_event_type() -> type: class HelmReleaseUnhealthyTrigger(HelmReleaseBaseTrigger): - def __init__(self, - rate_limit: int, - names: List[str] = [], - namespace: str = None, - duration: int = 900, ): - super().__init__( - statuses=UNHEALTHY_STATUSES, - names=names, - namespace=namespace, - duration=duration, - rate_limit=rate_limit, - ) + statuses: UNHEALTHY_STATUSES_LITERAL + duration: Literal[900] class HelmReleaseFailTrigger(HelmReleaseBaseTrigger): - def __init__(self, names: List[str] = [], namespace: str = None, rate_limit: int = sys.maxsize): - super().__init__( - statuses=FAILED_STATUSES, - names=names, - namespace=namespace, - duration=0, - rate_limit=rate_limit, - ) + statuses: FAILED_STATUSES_LITERAL + duration: Literal[0] class HelmReleaseDeployTrigger(HelmReleaseBaseTrigger): - def __init__(self, names: List[str] = [], namespace: str = None, rate_limit: int = sys.maxsize): - super().__init__( - statuses=DEPLOYED_STATUSES, - names=names, - namespace=namespace, - duration=0, - rate_limit=rate_limit, - ) + statuses: DEPLOYED_STATUSES_LITERAL + duration: Literal[0] class HelmReleaseTriggers(BaseModel): diff --git a/src/robusta/integrations/kubernetes/autogenerated/triggers.py b/src/robusta/integrations/kubernetes/autogenerated/triggers.py index 59768c109..88e319f6c 100644 --- a/src/robusta/integrations/kubernetes/autogenerated/triggers.py +++ b/src/robusta/integrations/kubernetes/autogenerated/triggers.py @@ -1,22 +1,18 @@ # This file was autogenerated. Do not edit. -from typing import Optional, Dict +from typing import Dict, Literal, Optional + from pydantic import BaseModel -from robusta.integrations.kubernetes.base_triggers import K8sBaseTrigger + from robusta.core.model.k8s_operation_type import K8sOperationType from robusta.integrations.kubernetes.autogenerated.events import * +from robusta.integrations.kubernetes.base_triggers import K8sBaseTrigger # Pod Triggers class PodAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Pod", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Pod" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -24,14 +20,8 @@ def get_execution_event_type() -> type: class PodCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Pod", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Pod" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -39,14 +29,8 @@ def get_execution_event_type() -> type: class PodDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Pod", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Pod" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -54,14 +38,8 @@ def get_execution_event_type() -> type: class PodUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Pod", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Pod" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -70,14 +48,8 @@ def get_execution_event_type() -> type: # ReplicaSet Triggers class ReplicaSetAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ReplicaSet", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ReplicaSet" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -85,14 +57,8 @@ def get_execution_event_type() -> type: class ReplicaSetCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ReplicaSet", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ReplicaSet" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -100,14 +66,8 @@ def get_execution_event_type() -> type: class ReplicaSetDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ReplicaSet", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ReplicaSet" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -115,14 +75,8 @@ def get_execution_event_type() -> type: class ReplicaSetUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ReplicaSet", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ReplicaSet" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -131,14 +85,8 @@ def get_execution_event_type() -> type: # DaemonSet Triggers class DaemonSetAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="DaemonSet", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "DaemonSet" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -146,14 +94,8 @@ def get_execution_event_type() -> type: class DaemonSetCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="DaemonSet", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "DaemonSet" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -161,14 +103,8 @@ def get_execution_event_type() -> type: class DaemonSetDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="DaemonSet", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "DaemonSet" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -176,14 +112,8 @@ def get_execution_event_type() -> type: class DaemonSetUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="DaemonSet", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "DaemonSet" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -192,14 +122,8 @@ def get_execution_event_type() -> type: # Deployment Triggers class DeploymentAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Deployment", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Deployment" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -207,14 +131,8 @@ def get_execution_event_type() -> type: class DeploymentCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Deployment", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Deployment" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -222,14 +140,8 @@ def get_execution_event_type() -> type: class DeploymentDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Deployment", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Deployment" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -237,14 +149,8 @@ def get_execution_event_type() -> type: class DeploymentUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Deployment", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Deployment" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -253,14 +159,8 @@ def get_execution_event_type() -> type: # StatefulSet Triggers class StatefulSetAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="StatefulSet", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "StatefulSet" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -268,14 +168,8 @@ def get_execution_event_type() -> type: class StatefulSetCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="StatefulSet", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "StatefulSet" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -283,14 +177,8 @@ def get_execution_event_type() -> type: class StatefulSetDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="StatefulSet", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "StatefulSet" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -298,14 +186,8 @@ def get_execution_event_type() -> type: class StatefulSetUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="StatefulSet", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "StatefulSet" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -314,14 +196,8 @@ def get_execution_event_type() -> type: # Service Triggers class ServiceAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Service", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Service" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -329,14 +205,8 @@ def get_execution_event_type() -> type: class ServiceCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Service", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Service" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -344,14 +214,8 @@ def get_execution_event_type() -> type: class ServiceDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Service", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Service" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -359,14 +223,8 @@ def get_execution_event_type() -> type: class ServiceUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Service", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Service" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -375,14 +233,8 @@ def get_execution_event_type() -> type: # Event Triggers class EventAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Event", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Event" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -390,14 +242,8 @@ def get_execution_event_type() -> type: class EventCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Event", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Event" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -405,14 +251,8 @@ def get_execution_event_type() -> type: class EventDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Event", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Event" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -420,14 +260,8 @@ def get_execution_event_type() -> type: class EventUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Event", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Event" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -436,14 +270,8 @@ def get_execution_event_type() -> type: # HorizontalPodAutoscaler Triggers class HorizontalPodAutoscalerAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="HorizontalPodAutoscaler", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "HorizontalPodAutoscaler" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -451,14 +279,8 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="HorizontalPodAutoscaler", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "HorizontalPodAutoscaler" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -466,14 +288,8 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="HorizontalPodAutoscaler", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "HorizontalPodAutoscaler" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -481,14 +297,8 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="HorizontalPodAutoscaler", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "HorizontalPodAutoscaler" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -497,14 +307,8 @@ def get_execution_event_type() -> type: # Node Triggers class NodeAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Node", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Node" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -512,14 +316,8 @@ def get_execution_event_type() -> type: class NodeCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Node", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Node" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -527,14 +325,8 @@ def get_execution_event_type() -> type: class NodeDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Node", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Node" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -542,14 +334,8 @@ def get_execution_event_type() -> type: class NodeUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Node", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Node" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -558,14 +344,8 @@ def get_execution_event_type() -> type: # ClusterRole Triggers class ClusterRoleAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRole", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRole" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -573,14 +353,8 @@ def get_execution_event_type() -> type: class ClusterRoleCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRole", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRole" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -588,14 +362,8 @@ def get_execution_event_type() -> type: class ClusterRoleDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRole", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRole" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -603,14 +371,8 @@ def get_execution_event_type() -> type: class ClusterRoleUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRole", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRole" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -619,14 +381,8 @@ def get_execution_event_type() -> type: # ClusterRoleBinding Triggers class ClusterRoleBindingAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRoleBinding", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRoleBinding" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -634,14 +390,8 @@ def get_execution_event_type() -> type: class ClusterRoleBindingCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRoleBinding", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRoleBinding" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -649,14 +399,8 @@ def get_execution_event_type() -> type: class ClusterRoleBindingDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRoleBinding", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRoleBinding" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -664,14 +408,8 @@ def get_execution_event_type() -> type: class ClusterRoleBindingUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ClusterRoleBinding", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ClusterRoleBinding" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -680,14 +418,8 @@ def get_execution_event_type() -> type: # Job Triggers class JobAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Job", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Job" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -695,14 +427,8 @@ def get_execution_event_type() -> type: class JobCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Job", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Job" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -710,14 +436,8 @@ def get_execution_event_type() -> type: class JobDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Job", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Job" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -725,14 +445,8 @@ def get_execution_event_type() -> type: class JobUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Job", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Job" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -741,14 +455,8 @@ def get_execution_event_type() -> type: # Namespace Triggers class NamespaceAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Namespace", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Namespace" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -756,14 +464,8 @@ def get_execution_event_type() -> type: class NamespaceCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Namespace", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Namespace" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -771,14 +473,8 @@ def get_execution_event_type() -> type: class NamespaceDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Namespace", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Namespace" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -786,14 +482,8 @@ def get_execution_event_type() -> type: class NamespaceUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Namespace", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Namespace" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -802,14 +492,8 @@ def get_execution_event_type() -> type: # ServiceAccount Triggers class ServiceAccountAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ServiceAccount", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ServiceAccount" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -817,14 +501,8 @@ def get_execution_event_type() -> type: class ServiceAccountCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ServiceAccount", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ServiceAccount" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -832,14 +510,8 @@ def get_execution_event_type() -> type: class ServiceAccountDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ServiceAccount", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ServiceAccount" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -847,14 +519,8 @@ def get_execution_event_type() -> type: class ServiceAccountUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ServiceAccount", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ServiceAccount" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -863,14 +529,8 @@ def get_execution_event_type() -> type: # PersistentVolume Triggers class PersistentVolumeAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolume", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolume" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -878,14 +538,8 @@ def get_execution_event_type() -> type: class PersistentVolumeCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolume", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolume" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -893,14 +547,8 @@ def get_execution_event_type() -> type: class PersistentVolumeDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolume", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolume" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -908,14 +556,8 @@ def get_execution_event_type() -> type: class PersistentVolumeUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolume", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolume" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -924,14 +566,8 @@ def get_execution_event_type() -> type: # PersistentVolumeClaim Triggers class PersistentVolumeClaimAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolumeClaim", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolumeClaim" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -939,14 +575,8 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolumeClaim", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolumeClaim" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -954,14 +584,8 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolumeClaim", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolumeClaim" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -969,14 +593,8 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="PersistentVolumeClaim", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "PersistentVolumeClaim" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -985,14 +603,8 @@ def get_execution_event_type() -> type: # NetworkPolicy Triggers class NetworkPolicyAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="NetworkPolicy", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "NetworkPolicy" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -1000,14 +612,8 @@ def get_execution_event_type() -> type: class NetworkPolicyCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="NetworkPolicy", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "NetworkPolicy" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -1015,14 +621,8 @@ def get_execution_event_type() -> type: class NetworkPolicyDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="NetworkPolicy", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "NetworkPolicy" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -1030,14 +630,8 @@ def get_execution_event_type() -> type: class NetworkPolicyUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="NetworkPolicy", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "NetworkPolicy" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -1046,14 +640,8 @@ def get_execution_event_type() -> type: # ConfigMap Triggers class ConfigMapAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ConfigMap", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ConfigMap" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -1061,14 +649,8 @@ def get_execution_event_type() -> type: class ConfigMapCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ConfigMap", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ConfigMap" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -1076,14 +658,8 @@ def get_execution_event_type() -> type: class ConfigMapDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ConfigMap", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ConfigMap" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -1091,14 +667,8 @@ def get_execution_event_type() -> type: class ConfigMapUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="ConfigMap", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "ConfigMap" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -1107,14 +677,8 @@ def get_execution_event_type() -> type: # Ingress Triggers class IngressAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Ingress", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -1122,14 +686,8 @@ def get_execution_event_type() -> type: class IngressCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Ingress", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -1137,14 +695,8 @@ def get_execution_event_type() -> type: class IngressDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Ingress", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -1152,14 +704,8 @@ def get_execution_event_type() -> type: class IngressUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Ingress", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -1168,14 +714,8 @@ def get_execution_event_type() -> type: # Kubernetes Any Triggers class KubernetesAnyAllChangesTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Any", - operation=None, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = None @staticmethod def get_execution_event_type() -> type: @@ -1183,14 +723,8 @@ def get_execution_event_type() -> type: class KubernetesAnyCreateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Any", - operation=K8sOperationType.CREATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -1198,14 +732,8 @@ def get_execution_event_type() -> type: class KubernetesAnyDeleteTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Any", - operation=K8sOperationType.DELETE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -1213,14 +741,8 @@ def get_execution_event_type() -> type: class KubernetesAnyUpdateTrigger(K8sBaseTrigger): - def __init__(self, name_prefix: str = None, namespace_prefix: str = None, labels_selector: str = None): - super().__init__( - kind="Any", - operation=K8sOperationType.UPDATE, - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) + kind: Literal[str] = "Ingress" + operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -1229,7 +751,6 @@ def get_execution_event_type() -> type: # K8s Trigger class class K8sTriggers(BaseModel): - on_clusterrole_all_changes: Optional[ClusterRoleAllChangesTrigger] on_clusterrole_create: Optional[ClusterRoleCreateTrigger] on_clusterrole_delete: Optional[ClusterRoleDeleteTrigger] diff --git a/src/robusta/integrations/kubernetes/base_triggers.py b/src/robusta/integrations/kubernetes/base_triggers.py index 9d91c64d7..f3e7e02ed 100644 --- a/src/robusta/integrations/kubernetes/base_triggers.py +++ b/src/robusta/integrations/kubernetes/base_triggers.py @@ -3,7 +3,7 @@ import hikaru from hikaru import HikaruBase -from pydantic import BaseModel, PrivateAttr +from pydantic import BaseModel, PrivateAttr, Field from robusta.core.model.events import ExecutionBaseEvent from robusta.core.model.k8s_operation_type import K8sOperationType @@ -40,11 +40,11 @@ def get_event_description(self) -> str: class K8sBaseTrigger(BaseTrigger): - kind: str + kind: str = Field(description="The kind of Kubernetes object. For example, 'Pod'") operation: K8sOperationType = None - name_prefix: str = None - namespace_prefix: str = None - labels_selector: str = None + name_prefix: str = Field(default=None, description="Only fire this trigger on resources with a matching name") + namespace_prefix: str = Field(default=None, description="Only fire this trigger on resources with a matching namespace") + labels_selector: str = Field(default=None, description="Only fire this trigger on resources with matching labels") _labels_map: Dict = PrivateAttr() def __init__(self, *args, **data): diff --git a/src/robusta/integrations/prometheus/trigger.py b/src/robusta/integrations/prometheus/trigger.py index 8d63819ab..e122e5175 100644 --- a/src/robusta/integrations/prometheus/trigger.py +++ b/src/robusta/integrations/prometheus/trigger.py @@ -1,9 +1,10 @@ import logging from concurrent.futures.process import ProcessPoolExecutor from typing import Dict, List, NamedTuple, Optional, Type, Union +from enum import Enum from hikaru.model.rel_1_26 import DaemonSet, HorizontalPodAutoscaler, Job, Node, NodeList, StatefulSet -from pydantic.main import BaseModel +from pydantic.main import BaseModel, Field from robusta.core.model.env_vars import ALERT_BUILDER_WORKERS, ALERTS_WORKERS_POOL from robusta.core.model.events import ExecutionBaseEvent @@ -50,17 +51,23 @@ class ResourceMapping(NamedTuple): ] +class AlertStatus(str, Enum): + FIRING = "firing" + RESOLVED = "resolved" + ALL = "all" + + class PrometheusAlertTrigger(BaseTrigger): """ :var status: one of "firing", "resolved", or "all" """ - alert_name: str = None - status: str = "firing" - pod_name_prefix: str = None - namespace_prefix: str = None - instance_name_prefix: str = None - k8s_providers: Optional[List[str]] + alert_name: str = Field(default=None, description="Only respond to alerts with this name") + status: AlertStatus = AlertStatus.FIRING + pod_name_prefix: str = Field(default=None, description="Optional. Only respond to alerts with a 'pod' label that has this prefix") + namespace_prefix: str = Field(default=None, description="Optional. Only respond to alerts with a 'namespace' label that has this prefix") + instance_name_prefix: str = Field(default=None, description="Optional. Only respond to alerts with a 'instance' label that has this prefix") + k8s_providers: Optional[List[str]] = Field(description="Optional. Only fire this trigger on clusters from a certain provider (e.g. EKS)") def get_trigger_event(self): return PrometheusTriggerEvent.__name__ From 3fe1cd8fee21cebf47e2f6dbb0416f3cfa0410bb Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sat, 28 Oct 2023 23:47:05 +0300 Subject: [PATCH 18/36] Improvements to playbook generator --- scripts/pages/playbook_builder.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py index e8ea22796..693b0cadd 100644 --- a/scripts/pages/playbook_builder.py +++ b/scripts/pages/playbook_builder.py @@ -41,7 +41,6 @@ def display_playbook_builder(): if "expander_state" not in ss: ss.expander_state = ExpanderState.TRIGGER - print("expander_state is", ss.expander_state) # initialize expanders trigger_expander = st.expander( ":zap: Trigger - A trigger is an event that starts your Playbook", @@ -71,7 +70,7 @@ def display_playbook_builder(): # TRIGGER PARAMETER with trigger_parameter_expander: - st.header("Available Parameters") + #st.header("Available Parameters") trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) st.button("Continue", key="button2", on_click=set_expander_state, args=[ExpanderState.ACTION]) From feb0d885f8bb3cf004433e71bdc0beea3d603cf9 Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Mon, 30 Oct 2023 16:23:17 +0530 Subject: [PATCH 19/36] Updated Playbook text --- scripts/pages/demo_playbooks.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py index 0c19afb9a..987469441 100644 --- a/scripts/pages/demo_playbooks.py +++ b/scripts/pages/demo_playbooks.py @@ -28,7 +28,7 @@ def display_demo_playbook(): with release_fail_expander: st.markdown( - "on_helm_release_fail is triggered when a Helm release enters a failed state. This is a one-time trigger, meaning that it only fires once when the release fails." + "When a Helm release enters failed state the on_helm_release_fail trigger is fired. Using the information from the trigger, helm_status_enricher is run to add more information to the alert" ) st.image("./docs/images/helm-release-failed.png") st.button( @@ -39,7 +39,7 @@ def display_demo_playbook(): with deployment_change_expander: st.markdown( - "on_deployment_update is triggered for every deployment updated. When this happens the resource_babysitter action sends you the changed field and details of what changed." + "When a deployment changes, the on_deployment_update trigger is fired. An alert is sent with data from the resource_babysitter action based on your customization." ) st.image("./docs/images/deployment-image-change.png") st.button( @@ -50,7 +50,7 @@ def display_demo_playbook(): with ingress_change_expander: st.markdown( - "on_ingress_all_changes is triggered for every change in an ingress. The resource_babysitter action sends you the changed field and details of what changed." + "When an ingress changes, the on_ingress_all_changes trigger is fired. An alert is sent with data from the resource_babysitter action based on your customization." ) st.image("./docs/images/ingress-image-change.png") st.button( From 9a6fee81014a22220a92908fd966be5bc402a216 Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada <25551553+pavangudiwada@users.noreply.github.com> Date: Sun, 5 Nov 2023 03:20:22 +0530 Subject: [PATCH 20/36] Single page playbook generator, simple navigation (#1140) * Single page playbook generator, simple navigation * workaround streamlit bug --------- Co-authored-by: Pavan Gudiwada Co-authored-by: Robusta Runner --- scripts/pages/demo_playbooks.py | 60 --------- scripts/pages/playbook_builder.py | 118 ------------------ scripts/playbook_generator.py | 199 ++++++++++++++++++++++++++++++ streamlit.Dockerfile | 2 +- 4 files changed, 200 insertions(+), 179 deletions(-) delete mode 100644 scripts/pages/demo_playbooks.py delete mode 100644 scripts/pages/playbook_builder.py create mode 100644 scripts/playbook_generator.py diff --git a/scripts/pages/demo_playbooks.py b/scripts/pages/demo_playbooks.py deleted file mode 100644 index 987469441..000000000 --- a/scripts/pages/demo_playbooks.py +++ /dev/null @@ -1,60 +0,0 @@ -import streamlit as st -from streamlit import session_state as ss - - -def update_changes(trigger, action): - ss.trigger = trigger - ss.action = action - ss.current_page = "playbook_builder" - ss.playbook_chosen = True - - -def display_demo_playbook(): - - st.set_page_config( - page_title="Demo Playbooks", - page_icon=":wrench:", - ) - st.title("Demo Playbooks", anchor=None) - - if "trigger" not in ss: - ss.trigger = "" - if "action" not in ss: - ss.action = "" - - release_fail_expander = st.expander(":zap: Get notified when a Helm release fails", expanded=False) - deployment_change_expander = st.expander(":zap: Get notified when a deployment changes", expanded=False) - ingress_change_expander = st.expander(":zap: Get notified when an ingress changes", expanded=False) - - with release_fail_expander: - st.markdown( - "When a Helm release enters failed state the on_helm_release_fail trigger is fired. Using the information from the trigger, helm_status_enricher is run to add more information to the alert" - ) - st.image("./docs/images/helm-release-failed.png") - st.button( - "Use Playbook", - key="but_release_fail", - on_click=lambda: update_changes("on_helm_release_fail", "helm_status_enricher"), - ) - - with deployment_change_expander: - st.markdown( - "When a deployment changes, the on_deployment_update trigger is fired. An alert is sent with data from the resource_babysitter action based on your customization." - ) - st.image("./docs/images/deployment-image-change.png") - st.button( - "Use Playbook", - key="but_deploy_change", - on_click=lambda: update_changes("on_deployment_update", "resource_babysitter"), - ) - - with ingress_change_expander: - st.markdown( - "When an ingress changes, the on_ingress_all_changes trigger is fired. An alert is sent with data from the resource_babysitter action based on your customization." - ) - st.image("./docs/images/ingress-image-change.png") - st.button( - "Use Playbook", - key="but_ingress_change", - on_click=lambda: update_changes("on_ingress_all_changes", "resource_babysitter"), - ) diff --git a/scripts/pages/playbook_builder.py b/scripts/pages/playbook_builder.py deleted file mode 100644 index 693b0cadd..000000000 --- a/scripts/pages/playbook_builder.py +++ /dev/null @@ -1,118 +0,0 @@ -# run with poetry run streamlit run scripts/main_app.py or use the streamlit.Dockerfile -from collections import OrderedDict -from enum import Enum - -import streamlit as st -import streamlit_pydantic as sp -import yaml -from streamlit import session_state as ss - -from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions - -generator = ExamplesGenerator() -triggers = generator.get_all_triggers() -actions = find_playbook_actions("./playbooks/robusta_playbooks") -actions_by_name = {a.action_name: a for a in actions} -triggers_to_actions = generator.get_triggers_to_actions(actions) - - -def go_back(): - for key in st.session_state.keys(): - if key != "current_page": - del st.session_state[key] - ss.current_page = "demo_playbooks" - - -class ExpanderState (Enum): - TRIGGER = 1 - TRIGGER_PARAMS = 2 - ACTION = 3 - ACTION_PARAMS = 4 - YAML = 5 - - -def set_expander_state(state: ExpanderState): - ss.expander_state=state - - -def display_playbook_builder(): - st.button(":point_left: Choose a Playbook", key="choose_playbook", on_click=go_back) - st.title(":wrench: Playbook Builder", anchor=None) - if "expander_state" not in ss: - ss.expander_state = ExpanderState.TRIGGER - - # initialize expanders - trigger_expander = st.expander( - ":zap: Trigger - A trigger is an event that starts your Playbook", - expanded=ss.expander_state == ExpanderState.TRIGGER - ) - trigger_parameter_expander = st.expander( - "Configure Trigger", - expanded=ss.expander_state == ExpanderState.TRIGGER_PARAMS - ) - action_expander = st.expander( - ":boom: Action - An action is an event a Playbook performs after it starts", - expanded=ss.expander_state == ExpanderState.ACTION - ) - action_parameter_expander = st.expander( - "Configure Action", - expanded=ss.expander_state == ExpanderState.ACTION_PARAMS - ) - playbook_expander = st.expander( - ":scroll: Playbook", - expanded=ss.expander_state == ExpanderState.YAML - ) - - # TRIGGER - with trigger_expander: - trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") - st.button("Continue", key="button1", on_click=set_expander_state, args=[ExpanderState.TRIGGER_PARAMS]) - - # TRIGGER PARAMETER - with trigger_parameter_expander: - #st.header("Available Parameters") - trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) - st.button("Continue", key="button2", on_click=set_expander_state, args=[ExpanderState.ACTION]) - - # ACTION - with action_expander: - relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] - action_name = st.selectbox("Choose an action", relevant_actions, key="action") - st.button("Continue", key="button3", on_click=set_expander_state, args=[ExpanderState.ACTION_PARAMS]) - - # ACTION PARAMETER - with action_parameter_expander: - action_obj = actions_by_name.get(action_name, None) - if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): - action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) - else: - st.markdown("This action doesn't have any parameters") - action_data = None - st.button("Continue", key="button4", on_click=set_expander_state, args=[ExpanderState.YAML]) - - # DISPLAY PLAYBOOK - with playbook_expander: - st.markdown( - "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" - ) - - if action_data is None: - playbook = { - "customPlaybooks": [ - OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: {}}])]) - ] - } - else: - playbook = { - "customPlaybooks": [ - OrderedDict( - [("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])] - ) - ] - } - - yaml.add_representer( - OrderedDict, lambda dumper, data: dumper.represent_mapping("tag:yaml.org,2002:map", data.items()) - ) - - st.code(yaml.dump(playbook)) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py new file mode 100644 index 000000000..8ab074cd4 --- /dev/null +++ b/scripts/playbook_generator.py @@ -0,0 +1,199 @@ +# run with poetry run streamlit run scripts/playbook_generator.py or use the streamlit.Dockerfile + +from collections import OrderedDict +from enum import Enum + +import streamlit as st +import streamlit_pydantic as sp +import yaml +from streamlit import session_state as ss + +from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions + +st.set_page_config( + page_title="Playbook Generator", + page_icon=":wrench:", +) + + +def update_changes(trigger, action): + ss.trigger = trigger + ss.action = action + ss.current_page = "playbook_builder" + ss.playbook_chosen = True + + +def go_to_playbook_builder(): + for key in st.session_state.keys(): + if key != "current_page": + del st.session_state[key] + ss.current_page = "playbook_builder" + + +def go_to_demo_playbooks(): + for key in st.session_state.keys(): + if key != "current_page": + del st.session_state[key] + ss.current_page = "demo_playbooks" + + +def display_demo_playbook(): + + st.button(":point_right: Create a custom Playbooks ", key="playbook_builder_btn", on_click=go_to_playbook_builder) + + st.title("Demo Playbooks", anchor=None) + + if "trigger" not in ss: + ss.trigger = "" + if "action" not in ss: + ss.action = "" + + release_fail_expander = st.expander(":zap: Get notified when a Helm release fails", expanded=False) + deployment_change_expander = st.expander(":zap: Get notified when a deployment changes", expanded=False) + ingress_change_expander = st.expander(":zap: Get notified when an ingress changes", expanded=False) + + with release_fail_expander: + st.markdown( + "When a Helm release enters failed state the on_helm_release_fail trigger is fired. Using the information from the trigger, helm_status_enricher is run to add more information to the alert" + ) + st.image("./docs/images/helm-release-failed.png") + st.button( + "Use Playbook", + key="but_release_fail", + on_click=lambda: update_changes("on_helm_release_fail", "helm_status_enricher"), + ) + + with deployment_change_expander: + st.markdown( + "When a deployment changes, the on_deployment_update trigger is fired. An alert is sent with data from the resource_babysitter action based on your customization." + ) + st.image("./docs/images/deployment-image-change.png") + st.button( + "Use Playbook", + key="but_deploy_change", + on_click=lambda: update_changes("on_deployment_update", "resource_babysitter"), + ) + + with ingress_change_expander: + st.markdown( + "When an ingress changes, the on_ingress_all_changes trigger is fired. An alert is sent with data from the resource_babysitter action based on your customization." + ) + st.image("./docs/images/ingress-image-change.png") + st.button( + "Use Playbook", + key="but_ingress_change", + on_click=lambda: update_changes("on_ingress_all_changes", "resource_babysitter"), + ) + + +generator = ExamplesGenerator() +triggers = generator.get_all_triggers() +actions = find_playbook_actions("./playbooks/robusta_playbooks") +actions_by_name = {a.action_name: a for a in actions} +triggers_to_actions = generator.get_triggers_to_actions(actions) + + +class ExpanderState(Enum): + TRIGGER = 1 + TRIGGER_PARAMS = 2 + ACTION = 3 + ACTION_PARAMS = 4 + YAML = 5 + + +def set_expander_state(state: ExpanderState): + ss.expander_state = state + + +def display_playbook_builder(): + st.button(":point_left: Choose a Playbook template", key="choose_playbook_btn", on_click=go_to_demo_playbooks) + st.title(":wrench: Playbook Builder", anchor=None) + if "expander_state" not in ss: + ss.expander_state = ExpanderState.TRIGGER + + # there seems to be a streamlit bug with how enums are stored in session state + # we work around by recreating the enum. without this, equality checks on the enum always return False + expander_state = ExpanderState(ss.expander_state.value) + + # initialize expanders + trigger_expander = st.expander( + ":zap: Trigger - A trigger is an event that starts your Playbook", + expanded=expander_state == ExpanderState.TRIGGER, + ) + trigger_parameter_expander = st.expander( + "Configure Trigger", expanded=expander_state == ExpanderState.TRIGGER_PARAMS + ) + action_expander = st.expander( + ":boom: Action - An action is an event a Playbook performs after it starts", + expanded=expander_state == ExpanderState.ACTION, + ) + action_parameter_expander = st.expander( + "Configure Action", expanded=expander_state == ExpanderState.ACTION_PARAMS + ) + playbook_expander = st.expander(":scroll: Playbook", expanded=expander_state == ExpanderState.YAML) + + # TRIGGER + with trigger_expander: + trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") + st.button("Continue", key="button1", on_click=set_expander_state, args=[ExpanderState.TRIGGER_PARAMS]) + + # TRIGGER PARAMETER + with trigger_parameter_expander: + # st.header("Available Parameters") + trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) + st.button("Continue", key="button2", on_click=set_expander_state, args=[ExpanderState.ACTION]) + + # ACTION + with action_expander: + relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] + action_name = st.selectbox("Choose an action", relevant_actions, key="action") + st.button("Continue", key="button3", on_click=set_expander_state, args=[ExpanderState.ACTION_PARAMS]) + + # ACTION PARAMETER + with action_parameter_expander: + action_obj = actions_by_name.get(action_name, None) + if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): + action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) + else: + st.markdown("This action doesn't have any parameters") + action_data = None + st.button("Continue", key="button4", on_click=set_expander_state, args=[ExpanderState.YAML]) + + # DISPLAY PLAYBOOK + with playbook_expander: + st.markdown( + "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" + ) + + if action_data is None: + playbook = { + "customPlaybooks": [ + OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: {}}])]) + ] + } + else: + playbook = { + "customPlaybooks": [ + OrderedDict( + [("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])] + ) + ] + } + + yaml.add_representer( + OrderedDict, lambda dumper, data: dumper.represent_mapping("tag:yaml.org,2002:map", data.items()) + ) + + st.code(yaml.dump(playbook)) + + +if __name__ == "__main__": + + if "current_page" not in ss: + ss.current_page = "demo_playbooks" + + if ss.current_page == "demo_playbooks": + display_demo_playbook() + + elif ss.current_page == "playbook_builder": + display_playbook_builder() diff --git a/streamlit.Dockerfile b/streamlit.Dockerfile index 73693b696..f03e2fb0c 100644 --- a/streamlit.Dockerfile +++ b/streamlit.Dockerfile @@ -22,4 +22,4 @@ RUN poetry config virtualenvs.create false RUN poetry install --extras "all" # Command to run Streamlit when the container starts -CMD ["streamlit", "run", "./scripts/main_app.py"] +CMD ["streamlit", "run", "./scripts/playbook_generator.py"] From 29de1263b749f03b638a76d250c18c89285e23b6 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 5 Nov 2023 01:30:15 +0200 Subject: [PATCH 21/36] more schema fixes --- scripts/generate_kubernetes_code.py | 4 +- .../core/triggers/error_event_trigger.py | 70 ++------ .../core/triggers/helm_releases_triggers.py | 33 ++-- .../kubernetes/autogenerated/triggers.py | 160 +++++++++--------- .../kubernetes/autogenerated/v1/models.py | 4 +- 5 files changed, 112 insertions(+), 159 deletions(-) diff --git a/scripts/generate_kubernetes_code.py b/scripts/generate_kubernetes_code.py index ef1531416..504d89a70 100755 --- a/scripts/generate_kubernetes_code.py +++ b/scripts/generate_kubernetes_code.py @@ -357,7 +357,7 @@ def autogenerate_triggers(f: TextIO): textwrap.dedent( f"""\ class {resource}{get_trigger_class_name(trigger_name)}Trigger(K8sBaseTrigger): - kind: Literal[str] = \"{resource}\" + kind: Literal[\"{resource}\"] = \"{resource}\" operation: Literal[K8sOperationType] = {operation_type} @staticmethod @@ -381,7 +381,7 @@ def get_execution_event_type() -> type: textwrap.dedent( f"""\ class KubernetesAny{get_trigger_class_name(trigger_name)}Trigger(K8sBaseTrigger): - kind: Literal[str] = \"{resource}\" + kind: Literal[\"{resource}\"] = \"{resource}\" operation: Literal[K8sOperationType] = {operation_type} @staticmethod diff --git a/src/robusta/core/triggers/error_event_trigger.py b/src/robusta/core/triggers/error_event_trigger.py index 35509bfc3..8794f2eaf 100644 --- a/src/robusta/core/triggers/error_event_trigger.py +++ b/src/robusta/core/triggers/error_event_trigger.py @@ -1,7 +1,10 @@ -from typing import List +from typing import List, Literal, Optional +from pydantic import Field +from enum import Enum from robusta.core.discovery.top_service_resolver import TopServiceResolver from robusta.core.playbooks.base_trigger import TriggerEvent +from robusta.core.model.k8s_operation_type import K8sOperationType from robusta.integrations.kubernetes.autogenerated.triggers import EventAllChangesTrigger, EventChangeEvent from robusta.integrations.kubernetes.base_triggers import K8sTriggerEvent from robusta.utils.rate_limiter import RateLimiter @@ -9,9 +12,9 @@ class WarningEventTrigger(EventAllChangesTrigger): rate_limit: int = 3600 - operations: List[str] = None - exclude: List[str] = None - include: List[str] = None + operation: Optional[K8sOperationType] = None + exclude: List[str] = Field(default=None, description="Ignore Events containing any of these strings") + include: List[str] = Field(default=None, description="Only monitor Events containing one of these strings") def __init__( self, @@ -52,7 +55,7 @@ def should_fire(self, event: TriggerEvent, playbook_id: str): if exec_event.get_event().type != "Warning": return False - if self.operations and exec_event.operation.value not in self.operations: + if self.operation and exec_event.operation.value != self.operation: return False event_content = f"{exec_event.obj.reason}{exec_event.obj.note}".lower() @@ -79,63 +82,12 @@ def should_fire(self, event: TriggerEvent, playbook_id: str): class WarningEventCreateTrigger(WarningEventTrigger): - def __init__( - self, - name_prefix: str = None, - namespace_prefix: str = None, - labels_selector: str = None, - rate_limit: int = 3600, - exclude: List[str] = (), - include: List[str] = (), - ): - super().__init__( - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - rate_limit=rate_limit, - operations=["create"], - exclude=exclude, - include=include, - ) + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE class WarningEventUpdateTrigger(WarningEventTrigger): - def __init__( - self, - name_prefix: str = None, - namespace_prefix: str = None, - labels_selector: str = None, - rate_limit: int = 3600, - exclude: List[str] = (), - include: List[str] = (), - ): - super().__init__( - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - rate_limit=rate_limit, - operations=["update"], - exclude=exclude, - include=include, - ) + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE class WarningEventDeleteTrigger(WarningEventTrigger): - def __init__( - self, - name_prefix: str = None, - namespace_prefix: str = None, - labels_selector: str = None, - rate_limit: int = 3600, - exclude: List[str] = (), - include: List[str] = (), - ): - super().__init__( - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - rate_limit=rate_limit, - operations=["delete"], - exclude=exclude, - include=include, - ) + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE diff --git a/src/robusta/core/triggers/helm_releases_triggers.py b/src/robusta/core/triggers/helm_releases_triggers.py index aaa971c47..2996cff39 100644 --- a/src/robusta/core/triggers/helm_releases_triggers.py +++ b/src/robusta/core/triggers/helm_releases_triggers.py @@ -1,6 +1,8 @@ +import enum + import logging import sys -from typing import Optional, List, Dict, Literal +from typing import Optional, List, Dict, Literal, Set from datetime import datetime import pytz from attr import dataclass @@ -13,13 +15,12 @@ from robusta.utils.rate_limiter import RateLimiter from robusta.utils.server_start import ServerStart -# TODO: can we just use a Literal for both versions? Need to check it doesn't break anything -UNHEALTHY_STATUSES = ["pending-install", "pending-upgrade", "pending-rollback", "uninstalling"] -UNHEALTHY_STATUSES_LITERAL = Literal["pending-install", "pending-upgrade", "pending-rollback", "uninstalling"] -FAILED_STATUSES = ["failed", "unknown"] -FAILED_STATUSES_LITERAL = Literal["failed", "unknown"] -DEPLOYED_STATUSES = ["deployed"] -DEPLOYED_STATUSES_LITERAL = Literal["deployed"] + +class HelmStatuses (enum.Enum): + UNHEALTHY = ["pending-install", "pending-upgrade", "pending-rollback", "uninstalling"] + FAILED = ["failed", "unknown"] + DEPLOYED = ["deployed"] + class IncomingHelmReleasesEventPayload(BaseModel): """ @@ -53,14 +54,14 @@ def get_severity(helm_release: HelmRelease) -> FindingSeverity: return FindingSeverity.HIGH def get_aggregation_key(self): - if self.helm_release.info.status in UNHEALTHY_STATUSES: + if self.helm_release.info.status in HelmStatuses.UNHEALTHY.value: return "Helm Release Unhealthy" return "Helm Release Info" class HelmReleaseBaseTrigger(BaseTrigger): - statuses: List[str] = Field(description="Helm status this trigger fires on") + statuses: Set[str] = Field(description="Helm status this trigger fires on") rate_limit: int = Field(description="How often should the trigger re-fire if the Helm release remains in this status?") names: Optional[List[str]] = Field(description="Optional. Only monitor Helm releases with these names.") namespace: Optional[str] = Field(description="Optional. Only monitor Helm releases in this namespace") @@ -94,7 +95,7 @@ def should_fire(self, event: TriggerEvent, playbook_id: str): pod_start_time_delta_seconds = (start_time_utc - last_deployed_utc).total_seconds() dont_fire = False - if event.helm_release.info.status in UNHEALTHY_STATUSES: + if event.helm_release.info.status in HelmStatuses.UNHEALTHY.value: rate_limiter_id = f"{event.helm_release.namespace}:{event.helm_release.name}" else: rate_limiter_id = f"{event.helm_release.namespace}:{event.helm_release.name}-{last_deployed_utc.isoformat()}" @@ -131,18 +132,18 @@ def get_execution_event_type() -> type: class HelmReleaseUnhealthyTrigger(HelmReleaseBaseTrigger): - statuses: UNHEALTHY_STATUSES_LITERAL + statuses: Literal[HelmStatuses.UNHEALTHY] = HelmStatuses.UNHEALTHY duration: Literal[900] class HelmReleaseFailTrigger(HelmReleaseBaseTrigger): - statuses: FAILED_STATUSES_LITERAL - duration: Literal[0] + statuses: Literal[HelmStatuses.FAILED] = HelmStatuses.FAILED + duration: Literal[0] = 0 class HelmReleaseDeployTrigger(HelmReleaseBaseTrigger): - statuses: DEPLOYED_STATUSES_LITERAL - duration: Literal[0] + statuses: Literal[HelmStatuses.DEPLOYED] = HelmStatuses.DEPLOYED + duration: Literal[0] = 0 class HelmReleaseTriggers(BaseModel): diff --git a/src/robusta/integrations/kubernetes/autogenerated/triggers.py b/src/robusta/integrations/kubernetes/autogenerated/triggers.py index 88e319f6c..06cec6e3f 100644 --- a/src/robusta/integrations/kubernetes/autogenerated/triggers.py +++ b/src/robusta/integrations/kubernetes/autogenerated/triggers.py @@ -11,7 +11,7 @@ # Pod Triggers class PodAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Pod" + kind: Literal["Pod"] = "Pod" operation: Literal[K8sOperationType] = None @staticmethod @@ -20,7 +20,7 @@ def get_execution_event_type() -> type: class PodCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Pod" + kind: Literal["Pod"] = "Pod" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -29,7 +29,7 @@ def get_execution_event_type() -> type: class PodDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Pod" + kind: Literal["Pod"] = "Pod" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -38,7 +38,7 @@ def get_execution_event_type() -> type: class PodUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Pod" + kind: Literal["Pod"] = "Pod" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -48,7 +48,7 @@ def get_execution_event_type() -> type: # ReplicaSet Triggers class ReplicaSetAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "ReplicaSet" + kind: Literal["ReplicaSet"] = "ReplicaSet" operation: Literal[K8sOperationType] = None @staticmethod @@ -57,7 +57,7 @@ def get_execution_event_type() -> type: class ReplicaSetCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ReplicaSet" + kind: Literal["ReplicaSet"] = "ReplicaSet" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -66,7 +66,7 @@ def get_execution_event_type() -> type: class ReplicaSetDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "ReplicaSet" + kind: Literal["ReplicaSet"] = "ReplicaSet" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -75,7 +75,7 @@ def get_execution_event_type() -> type: class ReplicaSetUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ReplicaSet" + kind: Literal["ReplicaSet"] = "ReplicaSet" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -85,7 +85,7 @@ def get_execution_event_type() -> type: # DaemonSet Triggers class DaemonSetAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "DaemonSet" + kind: Literal["DaemonSet"] = "DaemonSet" operation: Literal[K8sOperationType] = None @staticmethod @@ -94,7 +94,7 @@ def get_execution_event_type() -> type: class DaemonSetCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "DaemonSet" + kind: Literal["DaemonSet"] = "DaemonSet" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -103,7 +103,7 @@ def get_execution_event_type() -> type: class DaemonSetDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "DaemonSet" + kind: Literal["DaemonSet"] = "DaemonSet" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -112,7 +112,7 @@ def get_execution_event_type() -> type: class DaemonSetUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "DaemonSet" + kind: Literal["DaemonSet"] = "DaemonSet" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -122,7 +122,7 @@ def get_execution_event_type() -> type: # Deployment Triggers class DeploymentAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Deployment" + kind: Literal["Deployment"] = "Deployment" operation: Literal[K8sOperationType] = None @staticmethod @@ -131,7 +131,7 @@ def get_execution_event_type() -> type: class DeploymentCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Deployment" + kind: Literal["Deployment"] = "Deployment" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -140,7 +140,7 @@ def get_execution_event_type() -> type: class DeploymentDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Deployment" + kind: Literal["Deployment"] = "Deployment" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -149,7 +149,7 @@ def get_execution_event_type() -> type: class DeploymentUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Deployment" + kind: Literal["Deployment"] = "Deployment" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -159,7 +159,7 @@ def get_execution_event_type() -> type: # StatefulSet Triggers class StatefulSetAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "StatefulSet" + kind: Literal["StatefulSet"] = "StatefulSet" operation: Literal[K8sOperationType] = None @staticmethod @@ -168,7 +168,7 @@ def get_execution_event_type() -> type: class StatefulSetCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "StatefulSet" + kind: Literal["StatefulSet"] = "StatefulSet" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -177,7 +177,7 @@ def get_execution_event_type() -> type: class StatefulSetDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "StatefulSet" + kind: Literal["StatefulSet"] = "StatefulSet" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -186,7 +186,7 @@ def get_execution_event_type() -> type: class StatefulSetUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "StatefulSet" + kind: Literal["StatefulSet"] = "StatefulSet" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -196,7 +196,7 @@ def get_execution_event_type() -> type: # Service Triggers class ServiceAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Service" + kind: Literal["Service"] = "Service" operation: Literal[K8sOperationType] = None @staticmethod @@ -205,7 +205,7 @@ def get_execution_event_type() -> type: class ServiceCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Service" + kind: Literal["Service"] = "Service" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -214,7 +214,7 @@ def get_execution_event_type() -> type: class ServiceDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Service" + kind: Literal["Service"] = "Service" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -223,7 +223,7 @@ def get_execution_event_type() -> type: class ServiceUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Service" + kind: Literal["Service"] = "Service" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -233,7 +233,7 @@ def get_execution_event_type() -> type: # Event Triggers class EventAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Event" + kind: Literal["Event"] = "Event" operation: Literal[K8sOperationType] = None @staticmethod @@ -242,7 +242,7 @@ def get_execution_event_type() -> type: class EventCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Event" + kind: Literal["Event"] = "Event" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -251,7 +251,7 @@ def get_execution_event_type() -> type: class EventDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Event" + kind: Literal["Event"] = "Event" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -260,7 +260,7 @@ def get_execution_event_type() -> type: class EventUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Event" + kind: Literal["Event"] = "Event" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -270,7 +270,7 @@ def get_execution_event_type() -> type: # HorizontalPodAutoscaler Triggers class HorizontalPodAutoscalerAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "HorizontalPodAutoscaler" + kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" operation: Literal[K8sOperationType] = None @staticmethod @@ -279,7 +279,7 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "HorizontalPodAutoscaler" + kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -288,7 +288,7 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "HorizontalPodAutoscaler" + kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -297,7 +297,7 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "HorizontalPodAutoscaler" + kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -307,7 +307,7 @@ def get_execution_event_type() -> type: # Node Triggers class NodeAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Node" + kind: Literal["Node"] = "Node" operation: Literal[K8sOperationType] = None @staticmethod @@ -316,7 +316,7 @@ def get_execution_event_type() -> type: class NodeCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Node" + kind: Literal["Node"] = "Node" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -325,7 +325,7 @@ def get_execution_event_type() -> type: class NodeDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Node" + kind: Literal["Node"] = "Node" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -334,7 +334,7 @@ def get_execution_event_type() -> type: class NodeUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Node" + kind: Literal["Node"] = "Node" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -344,7 +344,7 @@ def get_execution_event_type() -> type: # ClusterRole Triggers class ClusterRoleAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRole" + kind: Literal["ClusterRole"] = "ClusterRole" operation: Literal[K8sOperationType] = None @staticmethod @@ -353,7 +353,7 @@ def get_execution_event_type() -> type: class ClusterRoleCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRole" + kind: Literal["ClusterRole"] = "ClusterRole" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -362,7 +362,7 @@ def get_execution_event_type() -> type: class ClusterRoleDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRole" + kind: Literal["ClusterRole"] = "ClusterRole" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -371,7 +371,7 @@ def get_execution_event_type() -> type: class ClusterRoleUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRole" + kind: Literal["ClusterRole"] = "ClusterRole" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -381,7 +381,7 @@ def get_execution_event_type() -> type: # ClusterRoleBinding Triggers class ClusterRoleBindingAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRoleBinding" + kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" operation: Literal[K8sOperationType] = None @staticmethod @@ -390,7 +390,7 @@ def get_execution_event_type() -> type: class ClusterRoleBindingCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRoleBinding" + kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -399,7 +399,7 @@ def get_execution_event_type() -> type: class ClusterRoleBindingDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRoleBinding" + kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -408,7 +408,7 @@ def get_execution_event_type() -> type: class ClusterRoleBindingUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ClusterRoleBinding" + kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -418,7 +418,7 @@ def get_execution_event_type() -> type: # Job Triggers class JobAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Job" + kind: Literal["Job"] = "Job" operation: Literal[K8sOperationType] = None @staticmethod @@ -427,7 +427,7 @@ def get_execution_event_type() -> type: class JobCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Job" + kind: Literal["Job"] = "Job" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -436,7 +436,7 @@ def get_execution_event_type() -> type: class JobDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Job" + kind: Literal["Job"] = "Job" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -445,7 +445,7 @@ def get_execution_event_type() -> type: class JobUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Job" + kind: Literal["Job"] = "Job" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -455,7 +455,7 @@ def get_execution_event_type() -> type: # Namespace Triggers class NamespaceAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Namespace" + kind: Literal["Namespace"] = "Namespace" operation: Literal[K8sOperationType] = None @staticmethod @@ -464,7 +464,7 @@ def get_execution_event_type() -> type: class NamespaceCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Namespace" + kind: Literal["Namespace"] = "Namespace" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -473,7 +473,7 @@ def get_execution_event_type() -> type: class NamespaceDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Namespace" + kind: Literal["Namespace"] = "Namespace" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -482,7 +482,7 @@ def get_execution_event_type() -> type: class NamespaceUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Namespace" + kind: Literal["Namespace"] = "Namespace" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -492,7 +492,7 @@ def get_execution_event_type() -> type: # ServiceAccount Triggers class ServiceAccountAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "ServiceAccount" + kind: Literal["ServiceAccount"] = "ServiceAccount" operation: Literal[K8sOperationType] = None @staticmethod @@ -501,7 +501,7 @@ def get_execution_event_type() -> type: class ServiceAccountCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ServiceAccount" + kind: Literal["ServiceAccount"] = "ServiceAccount" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -510,7 +510,7 @@ def get_execution_event_type() -> type: class ServiceAccountDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "ServiceAccount" + kind: Literal["ServiceAccount"] = "ServiceAccount" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -519,7 +519,7 @@ def get_execution_event_type() -> type: class ServiceAccountUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ServiceAccount" + kind: Literal["ServiceAccount"] = "ServiceAccount" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -529,7 +529,7 @@ def get_execution_event_type() -> type: # PersistentVolume Triggers class PersistentVolumeAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolume" + kind: Literal["PersistentVolume"] = "PersistentVolume" operation: Literal[K8sOperationType] = None @staticmethod @@ -538,7 +538,7 @@ def get_execution_event_type() -> type: class PersistentVolumeCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolume" + kind: Literal["PersistentVolume"] = "PersistentVolume" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -547,7 +547,7 @@ def get_execution_event_type() -> type: class PersistentVolumeDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolume" + kind: Literal["PersistentVolume"] = "PersistentVolume" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -556,7 +556,7 @@ def get_execution_event_type() -> type: class PersistentVolumeUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolume" + kind: Literal["PersistentVolume"] = "PersistentVolume" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -566,7 +566,7 @@ def get_execution_event_type() -> type: # PersistentVolumeClaim Triggers class PersistentVolumeClaimAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolumeClaim" + kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" operation: Literal[K8sOperationType] = None @staticmethod @@ -575,7 +575,7 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolumeClaim" + kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -584,7 +584,7 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolumeClaim" + kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -593,7 +593,7 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "PersistentVolumeClaim" + kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -603,7 +603,7 @@ def get_execution_event_type() -> type: # NetworkPolicy Triggers class NetworkPolicyAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "NetworkPolicy" + kind: Literal["NetworkPolicy"] = "NetworkPolicy" operation: Literal[K8sOperationType] = None @staticmethod @@ -612,7 +612,7 @@ def get_execution_event_type() -> type: class NetworkPolicyCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "NetworkPolicy" + kind: Literal["NetworkPolicy"] = "NetworkPolicy" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -621,7 +621,7 @@ def get_execution_event_type() -> type: class NetworkPolicyDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "NetworkPolicy" + kind: Literal["NetworkPolicy"] = "NetworkPolicy" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -630,7 +630,7 @@ def get_execution_event_type() -> type: class NetworkPolicyUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "NetworkPolicy" + kind: Literal["NetworkPolicy"] = "NetworkPolicy" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -640,7 +640,7 @@ def get_execution_event_type() -> type: # ConfigMap Triggers class ConfigMapAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "ConfigMap" + kind: Literal["ConfigMap"] = "ConfigMap" operation: Literal[K8sOperationType] = None @staticmethod @@ -649,7 +649,7 @@ def get_execution_event_type() -> type: class ConfigMapCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ConfigMap" + kind: Literal["ConfigMap"] = "ConfigMap" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -658,7 +658,7 @@ def get_execution_event_type() -> type: class ConfigMapDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "ConfigMap" + kind: Literal["ConfigMap"] = "ConfigMap" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -667,7 +667,7 @@ def get_execution_event_type() -> type: class ConfigMapUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "ConfigMap" + kind: Literal["ConfigMap"] = "ConfigMap" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -677,7 +677,7 @@ def get_execution_event_type() -> type: # Ingress Triggers class IngressAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = None @staticmethod @@ -686,7 +686,7 @@ def get_execution_event_type() -> type: class IngressCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -695,7 +695,7 @@ def get_execution_event_type() -> type: class IngressDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -704,7 +704,7 @@ def get_execution_event_type() -> type: class IngressUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod @@ -714,7 +714,7 @@ def get_execution_event_type() -> type: # Kubernetes Any Triggers class KubernetesAnyAllChangesTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = None @staticmethod @@ -723,7 +723,7 @@ def get_execution_event_type() -> type: class KubernetesAnyCreateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = K8sOperationType.CREATE @staticmethod @@ -732,7 +732,7 @@ def get_execution_event_type() -> type: class KubernetesAnyDeleteTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = K8sOperationType.DELETE @staticmethod @@ -741,7 +741,7 @@ def get_execution_event_type() -> type: class KubernetesAnyUpdateTrigger(K8sBaseTrigger): - kind: Literal[str] = "Ingress" + kind: Literal["Ingress"] = "Ingress" operation: Literal[K8sOperationType] = K8sOperationType.UPDATE @staticmethod diff --git a/src/robusta/integrations/kubernetes/autogenerated/v1/models.py b/src/robusta/integrations/kubernetes/autogenerated/v1/models.py index bfac5dfec..015d7cf84 100644 --- a/src/robusta/integrations/kubernetes/autogenerated/v1/models.py +++ b/src/robusta/integrations/kubernetes/autogenerated/v1/models.py @@ -1,8 +1,8 @@ # This file was autogenerated. Do not edit. from hikaru.model.rel_1_26.v1 import * -from robusta.integrations.kubernetes.custom_models import RobustaPod,RobustaDeployment,RobustaJob +from robusta.integrations.kubernetes.custom_models import RobustaDeployment, RobustaJob, RobustaPod KIND_TO_MODEL_CLASS = { "Pod": RobustaPod, @@ -23,5 +23,5 @@ "PersistentVolumeClaim": PersistentVolumeClaim, "NetworkPolicy": NetworkPolicy, "ConfigMap": ConfigMap, - "Ingress": Ingress + "Ingress": Ingress, } From d17d25c56ab4784095c7aeed34a1b58a42537f23 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 5 Nov 2023 22:53:07 +0200 Subject: [PATCH 22/36] Fix helm triggers --- .../core/triggers/helm_releases_triggers.py | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/robusta/core/triggers/helm_releases_triggers.py b/src/robusta/core/triggers/helm_releases_triggers.py index 2996cff39..29d2d9313 100644 --- a/src/robusta/core/triggers/helm_releases_triggers.py +++ b/src/robusta/core/triggers/helm_releases_triggers.py @@ -6,7 +6,7 @@ from datetime import datetime import pytz from attr import dataclass -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, PrivateAttr from robusta.core.model.events import ExecutionBaseEvent from robusta.core.model.helm_release import HelmRelease @@ -61,12 +61,16 @@ def get_aggregation_key(self): class HelmReleaseBaseTrigger(BaseTrigger): - statuses: Set[str] = Field(description="Helm status this trigger fires on") + _statuses: Set[str] = PrivateAttr() rate_limit: int = Field(description="How often should the trigger re-fire if the Helm release remains in this status?") names: Optional[List[str]] = Field(description="Optional. Only monitor Helm releases with these names.") namespace: Optional[str] = Field(description="Optional. Only monitor Helm releases in this namespace") duration: Optional[int] = Field(description="How long must the Helm release be in this status before firing") + def __init__(self, statuses, **kwargs): + self._statuses = statuses + super().__init__(**kwargs) + def get_trigger_event(self): return HelmReleasesTriggerEvent.__name__ @@ -74,7 +78,7 @@ def should_fire(self, event: TriggerEvent, playbook_id: str): if not isinstance(event, HelmReleasesTriggerEvent): return False - if self.statuses and event.helm_release.info.status not in self.statuses: + if self._statuses and event.helm_release.info.status not in self._statuses: return False if self.names and event.helm_release.name not in self.names: return False @@ -132,19 +136,25 @@ def get_execution_event_type() -> type: class HelmReleaseUnhealthyTrigger(HelmReleaseBaseTrigger): - statuses: Literal[HelmStatuses.UNHEALTHY] = HelmStatuses.UNHEALTHY - duration: Literal[900] + duration: Literal[900] = 900 + + def __init__(self, **kwargs): + super().__init__(HelmStatuses.UNHEALTHY, **kwargs) class HelmReleaseFailTrigger(HelmReleaseBaseTrigger): - statuses: Literal[HelmStatuses.FAILED] = HelmStatuses.FAILED duration: Literal[0] = 0 + def __init__(self, **kwargs): + super().__init__(HelmStatuses.FAILED, **kwargs) + class HelmReleaseDeployTrigger(HelmReleaseBaseTrigger): - statuses: Literal[HelmStatuses.DEPLOYED] = HelmStatuses.DEPLOYED duration: Literal[0] = 0 + def __init__(self, **kwargs): + super().__init__(HelmStatuses.DEPLOYED, **kwargs) + class HelmReleaseTriggers(BaseModel): on_helm_release_unhealthy: Optional[HelmReleaseUnhealthyTrigger] From 027a2442c7c9a6a7d55b21c72c6dac76f1db8521 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Sun, 5 Nov 2023 22:55:39 +0200 Subject: [PATCH 23/36] Update playbook_generator.py --- scripts/playbook_generator.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index 8ab074cd4..e8f7971de 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -1,13 +1,18 @@ # run with poetry run streamlit run scripts/playbook_generator.py or use the streamlit.Dockerfile +# to get streamlit-pydantic to not show something, it needs to be a Literal or a PrivateAttr +# if a Literal, it still must have a default value +# TODO: filter out BaseExecutionEvent actions that don't make sense like `add_silence` +# TODO: perhaps mark certain actions as recommended from collections import OrderedDict +from typing import List, Set, Optional, Literal from enum import Enum import streamlit as st import streamlit_pydantic as sp import yaml from streamlit import session_state as ss - +from pydantic import BaseModel from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions st.set_page_config( @@ -132,6 +137,9 @@ def display_playbook_builder(): ) playbook_expander = st.expander(":scroll: Playbook", expanded=expander_state == ExpanderState.YAML) + trigger_ready = False + action_ready = False + # TRIGGER with trigger_expander: trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") @@ -140,7 +148,13 @@ def display_playbook_builder(): # TRIGGER PARAMETER with trigger_parameter_expander: # st.header("Available Parameters") - trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name]) + trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name], ignore_empty_values=True) + + try: + trigger_data = triggers[trigger_name](**trigger_data).dict(exclude_defaults=True) + trigger_ready = True + except: + pass st.button("Continue", key="button2", on_click=set_expander_state, args=[ExpanderState.ACTION]) # ACTION @@ -153,14 +167,26 @@ def display_playbook_builder(): with action_parameter_expander: action_obj = actions_by_name.get(action_name, None) if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): - action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type) + action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type, ignore_empty_values=True) + try: + action_data = action_obj.params_type(**action_data).dict(exclude_defaults=True) + action_ready = True + except: + pass else: st.markdown("This action doesn't have any parameters") action_data = None + action_ready = True + st.button("Continue", key="button4", on_click=set_expander_state, args=[ExpanderState.YAML]) # DISPLAY PLAYBOOK with playbook_expander: + if not trigger_ready: + st.warning("Error: mandatory Trigger fields are missing!") + if not action_ready: + st.warning("Error: mandatory Action fields are missing!") + st.markdown( "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" ) From 230e78021199671a3ff6446e266b592140e182f5 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 6 Nov 2023 08:40:08 -0500 Subject: [PATCH 24/36] Use streamlit_antd_components for stepper and streamlit_extra for stylable_container --- scripts/playbook_generator.py | 167 ++++++++++++++++++++-------------- 1 file changed, 98 insertions(+), 69 deletions(-) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index e8f7971de..45375241c 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -6,15 +6,19 @@ from collections import OrderedDict from typing import List, Set, Optional, Literal -from enum import Enum +from enum import Enum, StrEnum +import streamlit_antd_components as sac import streamlit as st import streamlit_pydantic as sp import yaml from streamlit import session_state as ss from pydantic import BaseModel +from streamlit_extras.stylable_container import stylable_container + from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions + st.set_page_config( page_title="Playbook Generator", page_icon=":wrench:", @@ -98,110 +102,135 @@ def display_demo_playbook(): triggers_to_actions = generator.get_triggers_to_actions(actions) -class ExpanderState(Enum): - TRIGGER = 1 - TRIGGER_PARAMS = 2 - ACTION = 3 - ACTION_PARAMS = 4 - YAML = 5 +class Screens(StrEnum): + TRIGGER = "Choose Trigger" + ACTION = "Choose Action" + YAML = "Apply Configuration" + def to_index(self): + return [Screens.TRIGGER, Screens.ACTION, Screens.YAML].index(self) -def set_expander_state(state: ExpanderState): - ss.expander_state = state + @classmethod + def get_current_screen(cls): + if "current_screen" not in ss: + return cls.TRIGGER + # there seems to be a streamlit bug with how enums are stored in session state + # we work around by recreating the enum. without this, equality checks on the enum always return False + return cls(ss.current_screen.value) -def display_playbook_builder(): - st.button(":point_left: Choose a Playbook template", key="choose_playbook_btn", on_click=go_to_demo_playbooks) - st.title(":wrench: Playbook Builder", anchor=None) - if "expander_state" not in ss: - ss.expander_state = ExpanderState.TRIGGER + @classmethod + def set_current_screen(cls, new_screen): + ss.current_screen = new_screen - # there seems to be a streamlit bug with how enums are stored in session state - # we work around by recreating the enum. without this, equality checks on the enum always return False - expander_state = ExpanderState(ss.expander_state.value) - # initialize expanders - trigger_expander = st.expander( - ":zap: Trigger - A trigger is an event that starts your Playbook", - expanded=expander_state == ExpanderState.TRIGGER, +def display_triggers(): + st.info(":zap: Triggers are events that cause a playbook to start running") + ss["trigger_name"] = st.selectbox( + "Choose a trigger", + triggers.keys(), + key="trigger", + placeholder="Type to search", + index=None ) - trigger_parameter_expander = st.expander( - "Configure Trigger", expanded=expander_state == ExpanderState.TRIGGER_PARAMS - ) - action_expander = st.expander( - ":boom: Action - An action is an event a Playbook performs after it starts", - expanded=expander_state == ExpanderState.ACTION, - ) - action_parameter_expander = st.expander( - "Configure Action", expanded=expander_state == ExpanderState.ACTION_PARAMS + if ss["trigger_name"] is None: + return + + with stylable_container( + key="green_button", + css_styles=""" + { + border: 1px solid rgba(49, 51, 63, 0.2); + border-radius: 0.5rem; + padding: calc(1em - 1px); + box-sizing: content-box; + } + """, + ): + st.header(f"*{ss['trigger_name']}* settings") + ss["trigger_data"] = sp.pydantic_form( + key=f"trigger_form-{ss['trigger_name']}", + model=triggers[ss['trigger_name']], + ignore_empty_values=True, + group_optional_fields="expander" + ) + try: + ss['trigger_data'] = triggers[ss['trigger_name']](**ss['trigger_data']).dict(exclude_defaults=True) + ss['trigger_ready'] = True + except: + pass + + st.button( + "Continue", + key="button1", + on_click=Screens.set_current_screen, + args=[Screens.ACTION], + disabled=ss["trigger_name"] is None ) - playbook_expander = st.expander(":scroll: Playbook", expanded=expander_state == ExpanderState.YAML) - trigger_ready = False - action_ready = False - # TRIGGER - with trigger_expander: - trigger_name = st.selectbox("Type to search", triggers.keys(), key="trigger") - st.button("Continue", key="button1", on_click=set_expander_state, args=[ExpanderState.TRIGGER_PARAMS]) +def display_playbook_builder(): + st.button(":point_left: Choose a Playbook template", key="choose_playbook_btn", on_click=go_to_demo_playbooks) + st.title(":wrench: Playbook Builder", anchor=None) - # TRIGGER PARAMETER - with trigger_parameter_expander: - # st.header("Available Parameters") - trigger_data = sp.pydantic_input(key=f"trigger_form-{trigger_name}", model=triggers[trigger_name], ignore_empty_values=True) + current_screen = Screens.get_current_screen() - try: - trigger_data = triggers[trigger_name](**trigger_data).dict(exclude_defaults=True) - trigger_ready = True - except: - pass - st.button("Continue", key="button2", on_click=set_expander_state, args=[ExpanderState.ACTION]) + step = sac.steps( + items=[ + sac.StepsItem(title=Screens.TRIGGER), + sac.StepsItem(title=Screens.ACTION), + sac.StepsItem(title=Screens.YAML), + ], index=current_screen.to_index(), format_func='title' + ) - # ACTION - with action_expander: - relevant_actions = [a.action_name for a in triggers_to_actions[trigger_name]] - action_name = st.selectbox("Choose an action", relevant_actions, key="action") - st.button("Continue", key="button3", on_click=set_expander_state, args=[ExpanderState.ACTION_PARAMS]) + if step == Screens.TRIGGER: + display_triggers() - # ACTION PARAMETER - with action_parameter_expander: - action_obj = actions_by_name.get(action_name, None) + elif step == Screens.ACTION: + st.info(":zap: Actions are what the playbook *does* - they can collect data or execute remediations") + relevant_actions = [a.action_name for a in triggers_to_actions[ss['trigger_name']]] + ss['action_name'] = st.selectbox("Choose an action", relevant_actions, key="action") + action_obj = actions_by_name.get(ss['action_name'], None) if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): - action_data = sp.pydantic_input(key=f"action_form-{action_name}", model=action_obj.params_type, ignore_empty_values=True) + action_data = sp.pydantic_form( + key=f"action_form-{ss['action_name']}", + model=action_obj.params_type, + ignore_empty_values=True, + group_optional_fields="expander" + ) try: - action_data = action_obj.params_type(**action_data).dict(exclude_defaults=True) - action_ready = True + ss['action_data'] = action_obj.params_type(**action_data).dict(exclude_defaults=True) + ss['action_ready'] = True except: pass else: st.markdown("This action doesn't have any parameters") - action_data = None - action_ready = True - - st.button("Continue", key="button4", on_click=set_expander_state, args=[ExpanderState.YAML]) + ss['action_data'] = None + ss['action_ready'] = True + st.button("Continue", key="button2", on_click=Screens.set_current_screen, args=[Screens.YAML]) - # DISPLAY PLAYBOOK - with playbook_expander: - if not trigger_ready: + elif step == Screens.YAML: + st.info(":scroll: Add this YAML to Robusta's Helm values to configure your playbook") + if not ss['trigger_ready']: st.warning("Error: mandatory Trigger fields are missing!") - if not action_ready: + if not ss['action_ready']: st.warning("Error: mandatory Action fields are missing!") st.markdown( "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" ) - if action_data is None: + if ss['action_data'] is None: playbook = { "customPlaybooks": [ - OrderedDict([("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: {}}])]) + OrderedDict([("triggers", [{ss['trigger_name']: ss['trigger_data']}]), ("actions", [{ss['action_name']: {}}])]) ] } else: playbook = { "customPlaybooks": [ OrderedDict( - [("triggers", [{trigger_name: trigger_data}]), ("actions", [{action_name: action_data}])] + [("triggers", [{ss['trigger_name']: ss['trigger_data']}]), ("actions", [{ss['action_name']: ss['action_data']}])] ) ] } From 2c626d3dd476aa17d50553b7e97eb5eb352d9ee4 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 6 Nov 2023 13:21:46 -0600 Subject: [PATCH 25/36] Use pydantic_form instead of streamlit_extras.stylable_container --- scripts/custom_streamlit_pydantic.py | 78 ++++++++++++++++++++++++++++ scripts/playbook_generator.py | 63 +++++++++++----------- 2 files changed, 107 insertions(+), 34 deletions(-) create mode 100644 scripts/custom_streamlit_pydantic.py diff --git a/scripts/custom_streamlit_pydantic.py b/scripts/custom_streamlit_pydantic.py new file mode 100644 index 000000000..0230ec1ff --- /dev/null +++ b/scripts/custom_streamlit_pydantic.py @@ -0,0 +1,78 @@ +# based on code in streamlit_pydantic.pydantic_form but with extra modifications for our use case +import streamlit as st +from typing import Type, Optional, TypeVar, Callable +from pydantic import BaseModel, ValidationError, parse_obj_as +from streamlit_pydantic import pydantic_input +from streamlit_pydantic.ui_renderer import GroupOptionalFieldsStrategy + +# Define generic type to allow autocompletion for the model fields +T = TypeVar("T", bound=BaseModel) + + +def modified_pydantic_form( + key: str, + model: Type[T], + submit_label: str = "Submit", + clear_on_submit: bool = False, + group_optional_fields: GroupOptionalFieldsStrategy = "no", # type: ignore + lowercase_labels: bool = False, + ignore_empty_values: bool = False, + title: str = None, + on_submit: Callable = None +) -> Optional[T]: + """Auto-generates a Streamlit form based on the given (Pydantic-based) input class. + + Args: + key (str): A string that identifies the form. Each form must have its own key. + model (Type[BaseModel]): The input model. Either a class or instance based on Pydantic `BaseModel` or Python `dataclass`. + submit_label (str): A short label explaining to the user what this button is for. Defaults to “Submit”. + clear_on_submit (bool): If True, all widgets inside the form will be reset to their default values after the user presses the Submit button. Defaults to False. + group_optional_fields (str, optional): If `sidebar`, optional input elements will be rendered on the sidebar. + If `expander`, optional input elements will be rendered inside an expander element. Defaults to `no`. + lowercase_labels (bool): If `True`, all input element labels will be lowercased. Defaults to `False`. + ignore_empty_values (bool): If `True`, empty values for strings and numbers will not be stored in the session state. Defaults to `False`. + + Returns: + Optional[BaseModel]: An instance of the given input class, + if the submit button is used and the input data passes the Pydantic validation. + """ + # TODO: replace with a visual container from streamlit_extras due to https://github.com/LukasMasuch/streamlit-pydantic/issues/39 + with st.form(key=key, clear_on_submit=clear_on_submit): + if title is not None: + st.header(title) + + input_state = pydantic_input( + key, + model, + group_optional_fields=group_optional_fields, + lowercase_labels=lowercase_labels, + ignore_empty_values=ignore_empty_values, + ) + submit_button = st.form_submit_button(label=submit_label) + + if submit_button: + try: + result = None + # check if the model is an instance before parsing + if isinstance(model, BaseModel): + result = parse_obj_as(model.__class__, input_state) + else: + result = parse_obj_as(model, input_state) + + if on_submit is not None: + on_submit() + return result + + except ValidationError as ex: + error_text = "**Whoops! There were some problems with your input:**" + for error in ex.errors(): + if "loc" in error and "msg" in error: + location = ".".join(error["loc"]).replace("__root__.", "") # type: ignore + error_msg = f"**{location}:** " + error["msg"] + error_text += "\n\n" + error_msg + else: + # Fallback + error_text += "\n\n" + str(error) + st.error(error_text) + return None + return None diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index 45375241c..11959ac37 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -17,7 +17,7 @@ from streamlit_extras.stylable_container import stylable_container from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions - +from custom_streamlit_pydantic import modified_pydantic_form, GroupOptionalFieldsStrategy st.set_page_config( page_title="Playbook Generator", @@ -121,51 +121,41 @@ def get_current_screen(cls): @classmethod def set_current_screen(cls, new_screen): + old_screen = ss.get("current_screen") ss.current_screen = new_screen + if new_screen != old_screen: + st.rerun() def display_triggers(): + trigger_names = list(triggers.keys()) + if ss.get("trigger_name") is not None: + index = trigger_names.index(ss["trigger_name"]) + else: + index = None + st.info(":zap: Triggers are events that cause a playbook to start running") ss["trigger_name"] = st.selectbox( "Choose a trigger", - triggers.keys(), + trigger_names, key="trigger", placeholder="Type to search", - index=None + index=index ) if ss["trigger_name"] is None: return - with stylable_container( - key="green_button", - css_styles=""" - { - border: 1px solid rgba(49, 51, 63, 0.2); - border-radius: 0.5rem; - padding: calc(1em - 1px); - box-sizing: content-box; - } - """, - ): - st.header(f"*{ss['trigger_name']}* settings") - ss["trigger_data"] = sp.pydantic_form( - key=f"trigger_form-{ss['trigger_name']}", - model=triggers[ss['trigger_name']], - ignore_empty_values=True, - group_optional_fields="expander" - ) - try: - ss['trigger_data'] = triggers[ss['trigger_name']](**ss['trigger_data']).dict(exclude_defaults=True) - ss['trigger_ready'] = True - except: - pass - - st.button( - "Continue", - key="button1", - on_click=Screens.set_current_screen, - args=[Screens.ACTION], - disabled=ss["trigger_name"] is None + # use an instance with previous form data if it exists, otherwise use the model class + trigger_data = ss.get("trigger_data") or triggers[ss["trigger_name"]] + + ss["trigger_data"] = modified_pydantic_form( + key=f"trigger_form-{ss['trigger_name']}", + model=triggers[ss['trigger_name']], + ignore_empty_values=True, + group_optional_fields="expander", + title=f"*{ss['trigger_name']}* settings", + submit_label="Continue", + on_submit=lambda: Screens.set_current_screen(Screens.ACTION) ) @@ -184,9 +174,13 @@ def display_playbook_builder(): ) if step == Screens.TRIGGER: + print("display triggers") display_triggers() + + # TODO: move this part to a function like display_triggers() elif step == Screens.ACTION: + print("display actions") st.info(":zap: Actions are what the playbook *does* - they can collect data or execute remediations") relevant_actions = [a.action_name for a in triggers_to_actions[ss['trigger_name']]] ss['action_name'] = st.selectbox("Choose an action", relevant_actions, key="action") @@ -211,7 +205,7 @@ def display_playbook_builder(): elif step == Screens.YAML: st.info(":scroll: Add this YAML to Robusta's Helm values to configure your playbook") - if not ss['trigger_ready']: + if not ss['trigger_data']: st.warning("Error: mandatory Trigger fields are missing!") if not ss['action_ready']: st.warning("Error: mandatory Action fields are missing!") @@ -220,6 +214,7 @@ def display_playbook_builder(): "Add this code to your **generated_values.yaml** and [upgrade Robusta](https://docs.robusta.dev/external-prom-docs/setup-robusta/upgrade.html)" ) + trigger_dict = ss["trigger_data"].dict(exclude_defaults=True) if ss['action_data'] is None: playbook = { "customPlaybooks": [ From 723d0775b3df08ce26664746f51ddf5a9daf3fa1 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 6 Nov 2023 13:22:52 -0600 Subject: [PATCH 26/36] Fix dependencies --- pyproject.toml | 1 + scripts/playbook_generator.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 387e03f50..44bb674cb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -114,6 +114,7 @@ sphinx-jinja = { git = "https://github.com/robusta-dev/sphinx-jinja.git" } sphinx-reredirects = "^0.1.1" streamlit = "^1.25.0" streamlit-pydantic = "^0.6.0" +streamlit-antd-components = "^0.2.3" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index 11959ac37..2b4784004 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -14,7 +14,6 @@ import yaml from streamlit import session_state as ss from pydantic import BaseModel -from streamlit_extras.stylable_container import stylable_container from robusta.core.playbooks.generation import ExamplesGenerator, find_playbook_actions from custom_streamlit_pydantic import modified_pydantic_form, GroupOptionalFieldsStrategy From 16a07a765af50e06e3a2ccea5ac7c73ccb81858a Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 6 Nov 2023 13:45:11 -0600 Subject: [PATCH 27/36] clarify comment --- scripts/playbook_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index 2b4784004..bdfc308da 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -177,7 +177,7 @@ def display_playbook_builder(): display_triggers() - # TODO: move this part to a function like display_triggers() + # TODO: move this part to a function like display_triggers(). this requires not just moving it to a function, but updating the code to use modified_pydantic_form etc elif step == Screens.ACTION: print("display actions") st.info(":zap: Actions are what the playbook *does* - they can collect data or execute remediations") From 0ebcad5c41e17f7c4d61ef6febc5c184157f59d3 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 13 Nov 2023 08:57:41 +0200 Subject: [PATCH 28/36] Switch back to styled container and not pydantic_form --- poetry.lock | 641 ++++++++++++++++++++------- pyproject.toml | 1 + scripts/custom_streamlit_pydantic.py | 20 +- scripts/playbook_generator.py | 17 + 4 files changed, 525 insertions(+), 154 deletions(-) diff --git a/poetry.lock b/poetry.lock index c9f458da8..cd9d7742a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -131,6 +131,25 @@ setuptools = {version = "*", markers = "python_version >= \"3.12\""} [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] +[[package]] +name = "beautifulsoup4" +version = "4.12.2" +description = "Screen-scraping library" +category = "dev" +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"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + [[package]] name = "better-exceptions" version = "0.3.3" @@ -556,69 +575,6 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} -[[package]] -name = "contourpy" -version = "1.1.0" -description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "contourpy-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:89f06eff3ce2f4b3eb24c1055a26981bffe4e7264acd86f15b97e40530b794bc"}, - {file = "contourpy-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dffcc2ddec1782dd2f2ce1ef16f070861af4fb78c69862ce0aab801495dda6a3"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25ae46595e22f93592d39a7eac3d638cda552c3e1160255258b695f7b58e5655"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17cfaf5ec9862bc93af1ec1f302457371c34e688fbd381f4035a06cd47324f48"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa"}, - {file = "contourpy-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa"}, - {file = "contourpy-1.1.0-cp310-cp310-win32.whl", hash = "sha256:9b2dd2ca3ac561aceef4c7c13ba654aaa404cf885b187427760d7f7d4c57cff8"}, - {file = "contourpy-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2"}, - {file = "contourpy-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882"}, - {file = "contourpy-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052cc634bf903c604ef1a00a5aa093c54f81a2612faedaa43295809ffdde885e"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9382a1c0bc46230fb881c36229bfa23d8c303b889b788b939365578d762b5c18"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a"}, - {file = "contourpy-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e"}, - {file = "contourpy-1.1.0-cp311-cp311-win32.whl", hash = "sha256:edb989d31065b1acef3828a3688f88b2abb799a7db891c9e282df5ec7e46221b"}, - {file = "contourpy-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256"}, - {file = "contourpy-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed"}, - {file = "contourpy-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62013a2cf68abc80dadfd2307299bfa8f5aa0dcaec5b2954caeb5fa094171103"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b6616375d7de55797d7a66ee7d087efe27f03d336c27cf1f32c02b8c1a5ac70"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f"}, - {file = "contourpy-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1"}, - {file = "contourpy-1.1.0-cp38-cp38-win32.whl", hash = "sha256:108dfb5b3e731046a96c60bdc46a1a0ebee0760418951abecbe0fc07b5b93b27"}, - {file = "contourpy-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4"}, - {file = "contourpy-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9"}, - {file = "contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f2931ed4741f98f74b410b16e5213f71dcccee67518970c42f64153ea9313b9"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30f511c05fab7f12e0b1b7730ebdc2ec8deedcfb505bc27eb570ff47c51a8f15"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a"}, - {file = "contourpy-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002"}, - {file = "contourpy-1.1.0-cp39-cp39-win32.whl", hash = "sha256:71551f9520f008b2950bef5f16b0e3587506ef4f23c734b71ffb7b89f8721999"}, - {file = "contourpy-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a67259c2b493b00e5a4d0f7bfae51fb4b3371395e47d079a4446e9b0f4d70e76"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2b836d22bd2c7bb2700348e4521b25e077255ebb6ab68e351ab5aa91ca27e027"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084eaa568400cfaf7179b847ac871582199b1b44d5699198e9602ecbbb5f6104"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:911ff4fd53e26b019f898f32db0d4956c9d227d51338fb3b03ec72ff0084ee5f"}, - {file = "contourpy-1.1.0.tar.gz", hash = "sha256:e53046c3863828d21d531cc3b53786e6580eb1ba02477e8681009b6aa0870b21"}, -] - -[package.dependencies] -numpy = ">=1.16" - -[package.extras] -bokeh = ["bokeh", "selenium"] -docs = ["furo", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.2.0)", "types-Pillow"] -test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] -test-no-images = ["pytest", "pytest-cov", "wurlitzer"] - [[package]] name = "contourpy" version = "1.1.1" @@ -682,7 +638,10 @@ files = [ ] [package.dependencies] -numpy = {version = ">=1.16,<2.0", markers = "python_version <= \"3.11\""} +numpy = [ + {version = ">=1.16,<2.0", markers = "python_version <= \"3.11\""}, + {version = ">=1.26.0rc1,<2.0", markers = "python_version >= \"3.12\""}, +] [package.extras] bokeh = ["bokeh", "selenium"] @@ -944,6 +903,18 @@ https = ["urllib3[secure] (>=1.24.1)"] pgp = ["gpg"] watch = ["pyinotify"] +[[package]] +name = "entrypoints" +version = "0.4" +description = "Discover and load entry points from installed packages." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, +] + [[package]] name = "exceptiongroup" version = "1.1.3" @@ -959,6 +930,37 @@ files = [ [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "faker" +version = "19.12.0" +description = "Faker is a Python package that generates fake data for you." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Faker-19.12.0-py3-none-any.whl", hash = "sha256:5990380a8ee81cf189d6b85d5fdc1fb43772cb136aca0385a08ff24ef01b9fdf"}, + {file = "Faker-19.12.0.tar.gz", hash = "sha256:91438f6b1713274ec3f24970ba303617be86ce5caf6f6a0776f1d04777b6ff5f"}, +] + +[package.dependencies] +python-dateutil = ">=2.4" + +[[package]] +name = "favicon" +version = "0.7.0" +description = "Get a website's favicon." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "favicon-0.7.0-py2.py3-none-any.whl", hash = "sha256:7fec0617c73dcb8521ea788e1d38cdc7226c7cb8e28c81e11625d85fa1534880"}, + {file = "favicon-0.7.0.tar.gz", hash = "sha256:6d6b5a78de2a0d0084589f687f384b2ecd6a6527093fec564403b1a30605d7a8"}, +] + +[package.dependencies] +beautifulsoup4 = ">=4.7.0" +requests = ">=2.21.0" + [[package]] name = "filelock" version = "3.12.4" @@ -1226,6 +1228,21 @@ files = [ hikaru-core = ">=1.1.0" kubernetes = ">=26.1.0" +[[package]] +name = "htbuilder" +version = "0.6.2" +description = "A purely-functional HTML builder for Python. Think JSX rather than templates." +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "htbuilder-0.6.2-py3-none-any.whl", hash = "sha256:5bb707221a0e2162e406c9ecf7bcc9efa9ad590c9f2180149440415f43a10bb5"}, + {file = "htbuilder-0.6.2.tar.gz", hash = "sha256:9979a4fb6e50ce732bf6f6bc0441039dcaa3a3fc70689d8f38f601ed8a1aeec0"}, +] + +[package.dependencies] +more-itertools = "*" + [[package]] name = "httmock" version = "1.4.0" @@ -1670,6 +1687,130 @@ files = [ six = "*" tornado = {version = "*", markers = "python_version > \"2.7\""} +[[package]] +name = "lxml" +version = "4.9.3" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +files = [ + {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, + {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, + {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, + {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, + {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, + {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, + {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, + {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, + {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, + {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, + {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, + {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, + {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, + {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, + {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, + {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, + {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, + {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, + {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, + {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, + {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, + {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, + {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, + {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, + {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +] + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html5 = ["html5lib"] +htmlsoup = ["BeautifulSoup4"] +source = ["Cython (>=0.29.35)"] + +[[package]] +name = "markdown" +version = "3.5" +description = "Python implementation of John Gruber's Markdown." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Markdown-3.5-py3-none-any.whl", hash = "sha256:4afb124395ce5fc34e6d9886dab977fd9ae987fc6e85689f08278cf0c69d4bf3"}, + {file = "Markdown-3.5.tar.gz", hash = "sha256:a807eb2e4778d9156c8f07876c6e4d50b5494c5665c4834f67b06459dfd877b3"}, +] + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -1712,6 +1853,27 @@ all = ["pygments (>=2.7.3)", "wavedrom"] code-syntax-highlighting = ["pygments (>=2.7.3)"] wavedrom = ["wavedrom"] +[[package]] +name = "markdownlit" +version = "0.0.7" +description = "markdownlit adds a couple of lit Markdown capabilities to your Streamlit apps" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "markdownlit-0.0.7-py3-none-any.whl", hash = "sha256:b58bb539dcb52e0b040ab2fed32f1f3146cbb2746dc3812940d9dd359c378bb6"}, + {file = "markdownlit-0.0.7.tar.gz", hash = "sha256:553e2db454e2be4567caebef5176c98a40a7e24f7ea9c2fe8a1f05c1d9ea4005"}, +] + +[package.dependencies] +favicon = "*" +htbuilder = "*" +lxml = "*" +markdown = "*" +pymdown-extensions = "*" +streamlit = "*" +streamlit-extras = "*" + [[package]] name = "markupsafe" version = "2.0.1" @@ -1853,6 +2015,18 @@ files = [ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] +[[package]] +name = "more-itertools" +version = "10.1.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "more-itertools-10.1.0.tar.gz", hash = "sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a"}, + {file = "more_itertools-10.1.0-py3-none-any.whl", hash = "sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6"}, +] + [[package]] name = "mypy" version = "0.991" @@ -1933,37 +2107,48 @@ setuptools = "*" [[package]] name = "numpy" -version = "1.25.2" +version = "1.26.2" description = "Fundamental package for array computing in Python" category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db3ccc4e37a6873045580d413fe79b68e47a681af8db2e046f1dacfa11f86eb3"}, - {file = "numpy-1.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:90319e4f002795ccfc9050110bbbaa16c944b1c37c0baeea43c5fb881693ae1f"}, - {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4a913e29b418d096e696ddd422d8a5d13ffba4ea91f9f60440a3b759b0187"}, - {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f08f2e037bba04e707eebf4bc934f1972a315c883a9e0ebfa8a7756eabf9e357"}, - {file = "numpy-1.25.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bec1e7213c7cb00d67093247f8c4db156fd03075f49876957dca4711306d39c9"}, - {file = "numpy-1.25.2-cp310-cp310-win32.whl", hash = "sha256:7dc869c0c75988e1c693d0e2d5b26034644399dd929bc049db55395b1379e044"}, - {file = "numpy-1.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:834b386f2b8210dca38c71a6e0f4fd6922f7d3fcff935dbe3a570945acb1b545"}, - {file = "numpy-1.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5462d19336db4560041517dbb7759c21d181a67cb01b36ca109b2ae37d32418"}, - {file = "numpy-1.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5652ea24d33585ea39eb6a6a15dac87a1206a692719ff45d53c5282e66d4a8f"}, - {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2"}, - {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e7f0f7f6d0eee8364b9a6304c2845b9c491ac706048c7e8cf47b83123b8dbf"}, - {file = "numpy-1.25.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bb33d5a1cf360304754913a350edda36d5b8c5331a8237268c48f91253c3a364"}, - {file = "numpy-1.25.2-cp311-cp311-win32.whl", hash = "sha256:5883c06bb92f2e6c8181df7b39971a5fb436288db58b5a1c3967702d4278691d"}, - {file = "numpy-1.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:5c97325a0ba6f9d041feb9390924614b60b99209a71a69c876f71052521d42a4"}, - {file = "numpy-1.25.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b79e513d7aac42ae918db3ad1341a015488530d0bb2a6abcbdd10a3a829ccfd3"}, - {file = "numpy-1.25.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb942bfb6f84df5ce05dbf4b46673ffed0d3da59f13635ea9b926af3deb76926"}, - {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e0746410e73384e70d286f93abf2520035250aad8c5714240b0492a7302fdca"}, - {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7806500e4f5bdd04095e849265e55de20d8cc4b661b038957354327f6d9b295"}, - {file = "numpy-1.25.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8b77775f4b7df768967a7c8b3567e309f617dd5e99aeb886fa14dc1a0791141f"}, - {file = "numpy-1.25.2-cp39-cp39-win32.whl", hash = "sha256:2792d23d62ec51e50ce4d4b7d73de8f67a2fd3ea710dcbc8563a51a03fb07b01"}, - {file = "numpy-1.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:76b4115d42a7dfc5d485d358728cdd8719be33cc5ec6ec08632a5d6fca2ed380"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1a1329e26f46230bf77b02cc19e900db9b52f398d6722ca853349a782d4cff55"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3abc71e8b6edba80a01a52e66d83c5d14433cbcd26a40c329ec7ed09f37901"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b9735c27cea5d995496f46a8b1cd7b408b3f34b6d50459d9ac8fe3a20cc17bf"}, - {file = "numpy-1.25.2.tar.gz", hash = "sha256:fd608e19c8d7c55021dffd43bfe5492fab8cc105cc8986f813f8c3c048b38760"}, + {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, + {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, + {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, + {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, + {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, + {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, + {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, + {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, + {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, + {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, + {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, ] [[package]] @@ -2015,65 +2200,6 @@ files = [ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] -[[package]] -name = "pandas" -version = "2.1.0" -description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" -optional = false -python-versions = ">=3.9" -files = [ - {file = "pandas-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:40dd20439ff94f1b2ed55b393ecee9cb6f3b08104c2c40b0cb7186a2f0046242"}, - {file = "pandas-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4f38e4fedeba580285eaac7ede4f686c6701a9e618d8a857b138a126d067f2f"}, - {file = "pandas-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e6a0fe052cf27ceb29be9429428b4918f3740e37ff185658f40d8702f0b3e09"}, - {file = "pandas-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d81e1813191070440d4c7a413cb673052b3b4a984ffd86b8dd468c45742d3cc"}, - {file = "pandas-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eb20252720b1cc1b7d0b2879ffc7e0542dd568f24d7c4b2347cb035206936421"}, - {file = "pandas-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:38f74ef7ebc0ffb43b3d633e23d74882bce7e27bfa09607f3c5d3e03ffd9a4a5"}, - {file = "pandas-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cda72cc8c4761c8f1d97b169661f23a86b16fdb240bdc341173aee17e4d6cedd"}, - {file = "pandas-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d97daeac0db8c993420b10da4f5f5b39b01fc9ca689a17844e07c0a35ac96b4b"}, - {file = "pandas-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c58b1113892e0c8078f006a167cc210a92bdae23322bb4614f2f0b7a4b510f"}, - {file = "pandas-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:629124923bcf798965b054a540f9ccdfd60f71361255c81fa1ecd94a904b9dd3"}, - {file = "pandas-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:70cf866af3ab346a10debba8ea78077cf3a8cd14bd5e4bed3d41555a3280041c"}, - {file = "pandas-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d53c8c1001f6a192ff1de1efe03b31a423d0eee2e9e855e69d004308e046e694"}, - {file = "pandas-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86f100b3876b8c6d1a2c66207288ead435dc71041ee4aea789e55ef0e06408cb"}, - {file = "pandas-2.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28f330845ad21c11db51e02d8d69acc9035edfd1116926ff7245c7215db57957"}, - {file = "pandas-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9a6ccf0963db88f9b12df6720e55f337447aea217f426a22d71f4213a3099a6"}, - {file = "pandas-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d99e678180bc59b0c9443314297bddce4ad35727a1a2656dbe585fd78710b3b9"}, - {file = "pandas-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b31da36d376d50a1a492efb18097b9101bdbd8b3fbb3f49006e02d4495d4c644"}, - {file = "pandas-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0164b85937707ec7f70b34a6c3a578dbf0f50787f910f21ca3b26a7fd3363437"}, - {file = "pandas-2.1.0.tar.gz", hash = "sha256:62c24c7fc59e42b775ce0679cfa7b14a5f9bfb7643cfbe708c960699e05fb918"}, -] - -[package.dependencies] -numpy = {version = ">=1.23.2", markers = "python_version >= \"3.11\""} -python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.1" - -[package.extras] -all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] -aws = ["s3fs (>=2022.05.0)"] -clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] -compression = ["zstandard (>=0.17.0)"] -computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] -feather = ["pyarrow (>=7.0.0)"] -fss = ["fsspec (>=2022.05.0)"] -gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] -hdf5 = ["tables (>=3.7.0)"] -html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] -mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] -parquet = ["pyarrow (>=7.0.0)"] -performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] -plot = ["matplotlib (>=3.6.1)"] -postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] -spss = ["pyreadstat (>=1.1.5)"] -sql-other = ["SQLAlchemy (>=1.4.36)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.8.0)"] - [[package]] name = "pandas" version = "2.1.2" @@ -2113,6 +2239,7 @@ files = [ numpy = [ {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2608,6 +2735,25 @@ dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.3.1)", "mypy", "pre-commit docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] +[[package]] +name = "pymdown-extensions" +version = "10.3.1" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymdown_extensions-10.3.1-py3-none-any.whl", hash = "sha256:8cba67beb2a1318cdaf742d09dff7c0fc4cafcc290147ade0f8fb7b71522711a"}, + {file = "pymdown_extensions-10.3.1.tar.gz", hash = "sha256:f6c79941498a458852853872e379e7bab63888361ba20992fc8b4f8a9b61735e"}, +] + +[package.dependencies] +markdown = ">=3.2" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] + [[package]] name = "pymsteams" version = "0.1.16" @@ -3331,6 +3477,18 @@ files = [ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + [[package]] name = "sphinx" version = "4.5.0" @@ -3656,6 +3814,21 @@ files = [ lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] +[[package]] +name = "st-annotated-text" +version = "4.0.1" +description = "A simple component to display annotated text in Streamlit apps." +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "st-annotated-text-4.0.1.tar.gz", hash = "sha256:a8ccb9a35c078ef22c6ebb244a9a0605ce27f1fd699f55939497669081b79630"}, + {file = "st_annotated_text-4.0.1-py3-none-any.whl", hash = "sha256:0a2a72903a5752a55c0acef71bdf92cd225a23a8ae4135cfc213c4538bed432f"}, +] + +[package.dependencies] +htbuilder = "*" + [[package]] name = "storage3" version = "0.6.1" @@ -3713,6 +3886,144 @@ watchdog = {version = ">=2.1.5", markers = "platform_system != \"Darwin\""} [package.extras] snowflake = ["snowflake-connector-python (>=2.8.0)", "snowflake-snowpark-python (>=0.9.0)"] +[[package]] +name = "streamlit-antd-components" +version = "0.2.3" +description = "streamlit customer components of Antd Design and Mantine" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "streamlit_antd_components-0.2.3-py3-none-any.whl", hash = "sha256:935fd88ff079d0a83be844de21505f7bf7f9aae1f87c56ae4c7cd5d98190b2c7"}, +] + +[package.dependencies] +streamlit = ">=1.12.0" + +[[package]] +name = "streamlit-camera-input-live" +version = "0.2.0" +description = "Alternative version of st.camera_input which returns the webcam images live, without any button press needed" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "streamlit-camera-input-live-0.2.0.tar.gz", hash = "sha256:20ceb952b98410084176fcfeb9148e02ea29033a88d4a923161ac7890cedae0f"}, + {file = "streamlit_camera_input_live-0.2.0-py3-none-any.whl", hash = "sha256:dacb56cdedbb0d6c07e35a66b755b9145b5023e5c855c64193c3d3e73198e9be"}, +] + +[package.dependencies] +jinja2 = "*" +streamlit = ">=1.2" + +[[package]] +name = "streamlit-card" +version = "0.0.61" +description = "A streamlit component, to make UI cards" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "streamlit-card-0.0.61.tar.gz", hash = "sha256:1a5414d2d7f7aa0cdd3f6d5780b6c9a172ac784bad7260707638c9f054f1240d"}, + {file = "streamlit_card-0.0.61-py3-none-any.whl", hash = "sha256:055f59440d3cce6d16f761bd9a861383b0c9bbe56dd73b82a3d62dab24e054e5"}, +] + +[package.dependencies] +streamlit = ">=0.63" + +[[package]] +name = "streamlit-embedcode" +version = "0.1.2" +description = "Streamlit component for embedded code snippets" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "streamlit-embedcode-0.1.2.tar.gz", hash = "sha256:22a50eb43407bab3d0ed2d4b58e89819da477cd0592ef87edbd373c286712e3a"}, + {file = "streamlit_embedcode-0.1.2-py3-none-any.whl", hash = "sha256:b3c9520c1b48f2eef3c702b5a967f64c9a8ff2ea8e74ebb26c0e9195965bb923"}, +] + +[package.dependencies] +streamlit = ">=0.63" + +[[package]] +name = "streamlit-extras" +version = "0.3.4" +description = "A library to discover, try, install and share Streamlit extras" +category = "dev" +optional = false +python-versions = ">=3.8, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*" +files = [ + {file = "streamlit_extras-0.3.4-py3-none-any.whl", hash = "sha256:decb3a1feb065e36e2fe4b75bf433c691c38c063309d2dbba97215ae5df1372c"}, + {file = "streamlit_extras-0.3.4.tar.gz", hash = "sha256:0ca88e9adbbca1b30c66985642716ae1525d6073c111be94922240a71c9eb080"}, +] + +[package.dependencies] +entrypoints = ">=0.4" +htbuilder = ">=0.6.2" +markdownlit = ">=0.0.5" +protobuf = "!=3.20.2" +st-annotated-text = ">=3.0.0" +streamlit = ">=1.0.0" +streamlit-camera-input-live = ">=0.2.0" +streamlit-card = ">=0.0.4" +streamlit-embedcode = ">=0.1.2" +streamlit-faker = ">=0.0.2" +streamlit-image-coordinates = ">=0.1.1,<0.2.0" +streamlit-keyup = ">=0.1.9" +streamlit-toggle-switch = ">=1.0.2" +streamlit-vertical-slider = ">=1.0.2" + +[[package]] +name = "streamlit-faker" +version = "0.0.3" +description = "streamlit-faker is a library to very easily fake Streamlit commands" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "streamlit_faker-0.0.3-py3-none-any.whl", hash = "sha256:caf410867b55b4877d8fe73cc987d089e1938f8e63594f1eb579e28015844215"}, + {file = "streamlit_faker-0.0.3.tar.gz", hash = "sha256:bff0f053aa514a99313a3699746183b41111891c82d6e9b41b1c69a7d719bf2f"}, +] + +[package.dependencies] +faker = "*" +matplotlib = "*" +streamlit = "*" +streamlit-extras = "*" + +[[package]] +name = "streamlit-image-coordinates" +version = "0.1.6" +description = "Streamlit component that displays an image and returns the coordinates when you click on it" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "streamlit-image-coordinates-0.1.6.tar.gz", hash = "sha256:2327599727243a5ad9798e5767b624ab4d26985f606c6be435145eb1c4127d1d"}, + {file = "streamlit_image_coordinates-0.1.6-py3-none-any.whl", hash = "sha256:56b299c38c8c9aaa2fd724f12bc3b81017d01332a242152e10eeb63dffd50dd6"}, +] + +[package.dependencies] +jinja2 = "*" +streamlit = ">=1.2" + +[[package]] +name = "streamlit-keyup" +version = "0.2.0" +description = "Text input that renders on keyup" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "streamlit-keyup-0.2.0.tar.gz", hash = "sha256:5a38037af547163566eff9fec0ee17a7e3556e4bf99b68d44327c726b8ea85b3"}, + {file = "streamlit_keyup-0.2.0-py3-none-any.whl", hash = "sha256:7a187a40c3a95e3fea71be08e96e24c92c7054914e35c5bec3071be46f8a498e"}, +] + +[package.dependencies] +jinja2 = "*" +streamlit = ">=1.2" + [[package]] name = "streamlit-pydantic" version = "0.6.0" @@ -3733,6 +4044,36 @@ streamlit = ">=1.14.0" [package.extras] dev = ["black", "build", "colorama", "flake8", "isort", "lazydocs", "mypy", "pydocstyle", "pytest", "pytest-cov", "pytest-mock", "rope", "setuptools", "twine", "types-dataclasses", "universal-build", "wheel"] +[[package]] +name = "streamlit-toggle-switch" +version = "1.0.2" +description = "Creates a customizable toggle" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "streamlit_toggle_switch-1.0.2-py3-none-any.whl", hash = "sha256:0081212d80d178bda337acf2432425e2016d757f57834b18645d4c5b928d4c0f"}, + {file = "streamlit_toggle_switch-1.0.2.tar.gz", hash = "sha256:991b103cd3448b0f6507f8051777b996a17b4630956d5b6fa13344175b20e572"}, +] + +[package.dependencies] +streamlit = ">=0.63" + +[[package]] +name = "streamlit-vertical-slider" +version = "1.0.2" +description = "Creates a customizable vertical slider" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "streamlit_vertical_slider-1.0.2-py3-none-any.whl", hash = "sha256:ab727cd5c1799c1d9a19c6201ff2a9bcda08222c849c5670ad7a0d994c9fdcdc"}, + {file = "streamlit_vertical_slider-1.0.2.tar.gz", hash = "sha256:6eaee79a397341eee6ec7862b77d27d548d2bdd126812fd811f831bd4d561f48"}, +] + +[package.dependencies] +streamlit = ">=0.63" + [[package]] name = "strenum" version = "0.4.15" @@ -4345,4 +4686,4 @@ all = ["CairoSVG", "Flask", "better-exceptions", "datadog-api-client", "dulwich" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "fc8c4c33897810f35c72a92848524362b62ee66e108c02be4ec84d2f35e5b6e9" +content-hash = "bc5fbb38803c9a719a39823c744d09ad375ad4427479232d802f9ee62cf05906" diff --git a/pyproject.toml b/pyproject.toml index 44bb674cb..0d3d717c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -114,6 +114,7 @@ sphinx-jinja = { git = "https://github.com/robusta-dev/sphinx-jinja.git" } sphinx-reredirects = "^0.1.1" streamlit = "^1.25.0" streamlit-pydantic = "^0.6.0" +streamlit-extras = "^0.3.4" streamlit-antd-components = "^0.2.3" [build-system] diff --git a/scripts/custom_streamlit_pydantic.py b/scripts/custom_streamlit_pydantic.py index 0230ec1ff..62de278c9 100644 --- a/scripts/custom_streamlit_pydantic.py +++ b/scripts/custom_streamlit_pydantic.py @@ -4,6 +4,7 @@ from pydantic import BaseModel, ValidationError, parse_obj_as from streamlit_pydantic import pydantic_input from streamlit_pydantic.ui_renderer import GroupOptionalFieldsStrategy +from streamlit_extras.stylable_container import stylable_container # Define generic type to allow autocompletion for the model fields T = TypeVar("T", bound=BaseModel) @@ -36,10 +37,21 @@ def modified_pydantic_form( Optional[BaseModel]: An instance of the given input class, if the submit button is used and the input data passes the Pydantic validation. """ - # TODO: replace with a visual container from streamlit_extras due to https://github.com/LukasMasuch/streamlit-pydantic/issues/39 - with st.form(key=key, clear_on_submit=clear_on_submit): + # we can't use pydantic_form because of https://github.com/LukasMasuch/streamlit-pydantic/issues/39 + # so we design our own container for all elements, just like a form would + with stylable_container( + key=key, + css_styles=""" + { + border: 1px solid rgba(49, 51, 63, 0.2); + border-radius: 0.5rem; + padding: calc(1em - 1px); + box-sizing: content-box; + } + """, + ): if title is not None: - st.header(title) + st.subheader(title) input_state = pydantic_input( key, @@ -48,7 +60,7 @@ def modified_pydantic_form( lowercase_labels=lowercase_labels, ignore_empty_values=ignore_empty_values, ) - submit_button = st.form_submit_button(label=submit_label) + submit_button = st.button(label=submit_label) if submit_button: try: diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index bdfc308da..816992b6e 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -126,8 +126,25 @@ def set_current_screen(cls, new_screen): st.rerun() +HOT_TRIGGERS = ["on_prometheus_alert"] + + +def format_trigger_name(trigger_name): + if trigger_name in HOT_TRIGGERS: + return f"{trigger_name} 🔥" + return trigger_name + + +def sort_trigger_names(trigger_names): + hot_triggers = [t for t in trigger_names if t in HOT_TRIGGERS] + regular_triggers = [t for t in trigger_names if t not in HOT_TRIGGERS] + return hot_triggers + regular_triggers + + def display_triggers(): trigger_names = list(triggers.keys()) + trigger_names = sort_trigger_names(trigger_names) + if ss.get("trigger_name") is not None: index = trigger_names.index(ss["trigger_name"]) else: From 241d7478441566ea936d130fb60b4580bc71c692 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 13 Nov 2023 08:57:53 +0200 Subject: [PATCH 29/36] Fix bug with Warning events trigger --- .../core/triggers/error_event_trigger.py | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/src/robusta/core/triggers/error_event_trigger.py b/src/robusta/core/triggers/error_event_trigger.py index 8794f2eaf..7bc547503 100644 --- a/src/robusta/core/triggers/error_event_trigger.py +++ b/src/robusta/core/triggers/error_event_trigger.py @@ -16,26 +16,6 @@ class WarningEventTrigger(EventAllChangesTrigger): exclude: List[str] = Field(default=None, description="Ignore Events containing any of these strings") include: List[str] = Field(default=None, description="Only monitor Events containing one of these strings") - def __init__( - self, - name_prefix: str = None, - namespace_prefix: str = None, - labels_selector: str = None, - rate_limit: int = 3600, - operations: List[str] = None, - exclude: List[str] = (), - include: List[str] = (), - ): - super().__init__( - name_prefix=name_prefix, - namespace_prefix=namespace_prefix, - labels_selector=labels_selector, - ) - self.rate_limit = rate_limit - self.operations = operations - self.exclude = exclude - self.include = include - def should_fire(self, event: TriggerEvent, playbook_id: str): should_fire = super().should_fire(event, playbook_id) if not should_fire: From dd98818c947ac4e6314dc086b6fa8dfa66d78f35 Mon Sep 17 00:00:00 2001 From: Pavan Gudiwada Date: Thu, 16 Nov 2023 15:43:07 +0530 Subject: [PATCH 30/36] Issue with NonType --- scripts/playbook_generator.py | 111 ++++++++++++++++++++++++---------- 1 file changed, 78 insertions(+), 33 deletions(-) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index 816992b6e..a25e6db88 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -6,7 +6,8 @@ from collections import OrderedDict from typing import List, Set, Optional, Literal -from enum import Enum, StrEnum +from enum import Enum +from strenum import StrEnum import streamlit_antd_components as sac import streamlit as st @@ -25,8 +26,8 @@ def update_changes(trigger, action): - ss.trigger = trigger - ss.action = action + ss["trigger_name"] = trigger + ss["action_name"] = action ss.current_page = "playbook_builder" ss.playbook_chosen = True @@ -51,10 +52,16 @@ def display_demo_playbook(): st.title("Demo Playbooks", anchor=None) - if "trigger" not in ss: - ss.trigger = "" - if "action" not in ss: - ss.action = "" + if "trigger_name" not in ss: + ss["trigger_name"] = "on_helm_release_fail" + if "action_name" not in ss: + ss["action_name"] = "" + if "action_data" not in ss: + ss["action_data"] = "" + if "trigger_data" not in ss: + ss["trigger_data"] = "" + if "action_ready" not in ss: + ss["action_ready"] = "" release_fail_expander = st.expander(":zap: Get notified when a Helm release fails", expanded=False) deployment_change_expander = st.expander(":zap: Get notified when a deployment changes", expanded=False) @@ -161,12 +168,12 @@ def display_triggers(): if ss["trigger_name"] is None: return - # use an instance with previous form data if it exists, otherwise use the model class - trigger_data = ss.get("trigger_data") or triggers[ss["trigger_name"]] + trigger_data = ss["trigger_data"] or triggers[ss["trigger_name"]] + ss["trigger_data"] = modified_pydantic_form( key=f"trigger_form-{ss['trigger_name']}", - model=triggers[ss['trigger_name']], + model=triggers[ss["trigger_name"]], ignore_empty_values=True, group_optional_fields="expander", title=f"*{ss['trigger_name']}* settings", @@ -174,6 +181,44 @@ def display_triggers(): on_submit=lambda: Screens.set_current_screen(Screens.ACTION) ) +def display_actions(): + action_names = list(actions_by_name.keys()) + + st.info(":zap: Actions are what the playbook *does* - they can collect data or execute remediations") + relevant_actions = [a.action_name for a in triggers_to_actions[ss["trigger_name"]]] + + if ss.get("action_name") is not None: + index = relevant_actions.index(ss["action_name"]) + else: + index = 0 + + ss["action_name"] = st.selectbox( + "Choose an action", relevant_actions, key="actiontest", placeholder="Type to search", index=index + ) + action_obj = actions_by_name.get(ss["action_name"], None) + if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): + ss["action_data"] = modified_pydantic_form( + key=f"action_form-{ss['action_name']}-test", + model=action_obj.params_type, + ignore_empty_values=True, + group_optional_fields="expander", + title=f"*{ss['action_name']}* settings", + submit_label="Submit", + on_submit=lambda: Screens.set_current_screen(Screens.YAML), + ) + try: + ss["action_data"] = action_obj.params_type(**action_data).dict(exclude_defaults=True) + ss["action_ready"] = True + except: + ss["action_ready"] = True + pass + + else: + st.markdown("This action doesn't have any parameters") + ss["action_data"] = None + ss["action_ready"] = True + st.button("Continue", key="button2-test", on_click=Screens.set_current_screen, args=[Screens.YAML]) + def display_playbook_builder(): st.button(":point_left: Choose a Playbook template", key="choose_playbook_btn", on_click=go_to_demo_playbooks) @@ -190,34 +235,34 @@ def display_playbook_builder(): ) if step == Screens.TRIGGER: - print("display triggers") display_triggers() # TODO: move this part to a function like display_triggers(). this requires not just moving it to a function, but updating the code to use modified_pydantic_form etc elif step == Screens.ACTION: - print("display actions") - st.info(":zap: Actions are what the playbook *does* - they can collect data or execute remediations") - relevant_actions = [a.action_name for a in triggers_to_actions[ss['trigger_name']]] - ss['action_name'] = st.selectbox("Choose an action", relevant_actions, key="action") - action_obj = actions_by_name.get(ss['action_name'], None) - if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): - action_data = sp.pydantic_form( - key=f"action_form-{ss['action_name']}", - model=action_obj.params_type, - ignore_empty_values=True, - group_optional_fields="expander" - ) - try: - ss['action_data'] = action_obj.params_type(**action_data).dict(exclude_defaults=True) - ss['action_ready'] = True - except: - pass - else: - st.markdown("This action doesn't have any parameters") - ss['action_data'] = None - ss['action_ready'] = True - st.button("Continue", key="button2", on_click=Screens.set_current_screen, args=[Screens.YAML]) + display_actions() + # print("display actions") + # st.info(":zap: Actions are what the playbook *does* - they can collect data or execute remediations") + # relevant_actions = [a.action_name for a in triggers_to_actions[ss['trigger_name']]] + # ss['action_name'] = st.selectbox("Choose an action", relevant_actions, key="action") + # action_obj = actions_by_name.get(ss['action_name'], None) + # if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): + # action_data = sp.pydantic_form( + # key=f"action_form-{ss['action_name']}", + # model=action_obj.params_type, + # ignore_empty_values=True, + # group_optional_fields="expander" + # ) + # try: + # ss['action_data'] = action_obj.params_type(**action_data).dict(exclude_defaults=True) + # ss['action_ready'] = True + # except: + # pass + # else: + # st.markdown("This action doesn't have any parameters") + # ss['action_data'] = None + # ss['action_ready'] = True + # st.button("Continue", key="button2", on_click=Screens.set_current_screen, args=[Screens.YAML]) elif step == Screens.YAML: st.info(":scroll: Add this YAML to Robusta's Helm values to configure your playbook") From bc46b1dac1d9194f1fe831b10cc8aa9d7f7c1203 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Fri, 17 Nov 2023 09:04:10 +0200 Subject: [PATCH 31/36] Fix a few bugs (not the main bug we're troubleshooting) --- scripts/playbook_generator.py | 51 +++++------------------------------ 1 file changed, 7 insertions(+), 44 deletions(-) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index a25e6db88..1aa098028 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -169,11 +169,9 @@ def display_triggers(): return trigger_data = ss["trigger_data"] or triggers[ss["trigger_name"]] - - ss["trigger_data"] = modified_pydantic_form( key=f"trigger_form-{ss['trigger_name']}", - model=triggers[ss["trigger_name"]], + model=trigger_data, ignore_empty_values=True, group_optional_fields="expander", title=f"*{ss['trigger_name']}* settings", @@ -236,34 +234,8 @@ def display_playbook_builder(): if step == Screens.TRIGGER: display_triggers() - - - # TODO: move this part to a function like display_triggers(). this requires not just moving it to a function, but updating the code to use modified_pydantic_form etc elif step == Screens.ACTION: display_actions() - # print("display actions") - # st.info(":zap: Actions are what the playbook *does* - they can collect data or execute remediations") - # relevant_actions = [a.action_name for a in triggers_to_actions[ss['trigger_name']]] - # ss['action_name'] = st.selectbox("Choose an action", relevant_actions, key="action") - # action_obj = actions_by_name.get(ss['action_name'], None) - # if action_obj and hasattr(action_obj, "params_type") and hasattr(action_obj.params_type, "schema"): - # action_data = sp.pydantic_form( - # key=f"action_form-{ss['action_name']}", - # model=action_obj.params_type, - # ignore_empty_values=True, - # group_optional_fields="expander" - # ) - # try: - # ss['action_data'] = action_obj.params_type(**action_data).dict(exclude_defaults=True) - # ss['action_ready'] = True - # except: - # pass - # else: - # st.markdown("This action doesn't have any parameters") - # ss['action_data'] = None - # ss['action_ready'] = True - # st.button("Continue", key="button2", on_click=Screens.set_current_screen, args=[Screens.YAML]) - elif step == Screens.YAML: st.info(":scroll: Add this YAML to Robusta's Helm values to configure your playbook") if not ss['trigger_data']: @@ -276,21 +248,12 @@ def display_playbook_builder(): ) trigger_dict = ss["trigger_data"].dict(exclude_defaults=True) - if ss['action_data'] is None: - playbook = { - "customPlaybooks": [ - OrderedDict([("triggers", [{ss['trigger_name']: ss['trigger_data']}]), ("actions", [{ss['action_name']: {}}])]) - ] - } - else: - playbook = { - "customPlaybooks": [ - OrderedDict( - [("triggers", [{ss['trigger_name']: ss['trigger_data']}]), ("actions", [{ss['action_name']: ss['action_data']}])] - ) - ] - } - + action_data = ss['action_data'] or {} + playbook = { + "customPlaybooks": [ + OrderedDict([("triggers", [{ss['trigger_name']: trigger_dict}]), ("actions", [{ss['action_name']: {}}])]) + ] + } yaml.add_representer( OrderedDict, lambda dumper, data: dumper.represent_mapping("tag:yaml.org,2002:map", data.items()) ) From 633c942a6516dad8524a3c61eaee4f4bc2d2a2e1 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Fri, 17 Nov 2023 09:04:25 +0200 Subject: [PATCH 32/36] Fix bug with trigger_data being None --- scripts/custom_streamlit_pydantic.py | 46 ++++++++++++++-------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/scripts/custom_streamlit_pydantic.py b/scripts/custom_streamlit_pydantic.py index 62de278c9..315b9759d 100644 --- a/scripts/custom_streamlit_pydantic.py +++ b/scripts/custom_streamlit_pydantic.py @@ -62,29 +62,29 @@ def modified_pydantic_form( ) submit_button = st.button(label=submit_label) - if submit_button: - try: - result = None - # check if the model is an instance before parsing - if isinstance(model, BaseModel): - result = parse_obj_as(model.__class__, input_state) - else: - result = parse_obj_as(model, input_state) + try: + result = None + # check if the model is an instance before parsing + if isinstance(model, BaseModel): + result = parse_obj_as(model.__class__, input_state) + else: + result = parse_obj_as(model, input_state) - if on_submit is not None: - on_submit() - return result + if submit_button and on_submit is not None: + on_submit() + return result - except ValidationError as ex: - error_text = "**Whoops! There were some problems with your input:**" - for error in ex.errors(): - if "loc" in error and "msg" in error: - location = ".".join(error["loc"]).replace("__root__.", "") # type: ignore - error_msg = f"**{location}:** " + error["msg"] - error_text += "\n\n" + error_msg - else: - # Fallback - error_text += "\n\n" + str(error) - st.error(error_text) + except ValidationError as ex: + if not submit_button: return None - return None + error_text = "**Whoops! There were some problems with your input:**" + for error in ex.errors(): + if "loc" in error and "msg" in error: + location = ".".join(error["loc"]).replace("__root__.", "") # type: ignore + error_msg = f"**{location}:** " + error["msg"] + error_text += "\n\n" + error_msg + else: + # Fallback + error_text += "\n\n" + str(error) + st.error(error_text) + return None From 9a03a42ba65762bb391a2f27189c6eb5f443bec6 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 20 Nov 2023 11:34:33 +0200 Subject: [PATCH 33/36] Give variable a better name --- scripts/playbook_generator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index 1aa098028..779e2c2e2 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -168,10 +168,10 @@ def display_triggers(): if ss["trigger_name"] is None: return - trigger_data = ss["trigger_data"] or triggers[ss["trigger_name"]] + initial_data = ss["trigger_data"] or triggers[ss["trigger_name"]] ss["trigger_data"] = modified_pydantic_form( key=f"trigger_form-{ss['trigger_name']}", - model=trigger_data, + model=initial_data, ignore_empty_values=True, group_optional_fields="expander", title=f"*{ss['trigger_name']}* settings", From 7aef5a06c310cf15d4b4af42b0d3d53ce20e813e Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 20 Nov 2023 11:37:46 +0200 Subject: [PATCH 34/36] Fix bug w/ yaml output Operation enum in on_ingress_all_changes was not converted to yaml properly in output --- scripts/generate_kubernetes_code.py | 7 +- .../kubernetes/autogenerated/events.py | 10 +- .../kubernetes/autogenerated/models.py | 5 +- .../kubernetes/autogenerated/triggers.py | 161 +++++++++--------- 4 files changed, 90 insertions(+), 93 deletions(-) diff --git a/scripts/generate_kubernetes_code.py b/scripts/generate_kubernetes_code.py index 504d89a70..18b88bfc9 100755 --- a/scripts/generate_kubernetes_code.py +++ b/scripts/generate_kubernetes_code.py @@ -358,7 +358,7 @@ def autogenerate_triggers(f: TextIO): f"""\ class {resource}{get_trigger_class_name(trigger_name)}Trigger(K8sBaseTrigger): kind: Literal[\"{resource}\"] = \"{resource}\" - operation: Literal[K8sOperationType] = {operation_type} + operation: Literal[{operation_type}] = {operation_type} @staticmethod def get_execution_event_type() -> type: @@ -382,7 +382,7 @@ def get_execution_event_type() -> type: f"""\ class KubernetesAny{get_trigger_class_name(trigger_name)}Trigger(K8sBaseTrigger): kind: Literal[\"{resource}\"] = \"{resource}\" - operation: Literal[K8sOperationType] = {operation_type} + operation: Literal[{operation_type}] = {operation_type} @staticmethod def get_execution_event_type() -> type: @@ -439,3 +439,6 @@ def main(): if __name__ == "__main__": main() + print("Done. Before committing, it is recommended to run:") + print("poetry run isort src/robusta/integrations/kubernetes/autogenerated") + print("poetry run black src/robusta/integrations/kubernetes/autogenerated") diff --git a/src/robusta/integrations/kubernetes/autogenerated/events.py b/src/robusta/integrations/kubernetes/autogenerated/events.py index 89006f162..45645f41f 100644 --- a/src/robusta/integrations/kubernetes/autogenerated/events.py +++ b/src/robusta/integrations/kubernetes/autogenerated/events.py @@ -33,9 +33,7 @@ from hikaru.model.rel_1_26.v1 import DaemonSet as v1DaemonSet from hikaru.model.rel_1_26.v1 import Deployment as v1Deployment from hikaru.model.rel_1_26.v1 import Event as v1Event -from hikaru.model.rel_1_26.v1 import ( - HorizontalPodAutoscaler as v1HorizontalPodAutoscaler, -) +from hikaru.model.rel_1_26.v1 import HorizontalPodAutoscaler as v1HorizontalPodAutoscaler from hikaru.model.rel_1_26.v1 import Ingress as v1Ingress from hikaru.model.rel_1_26.v1 import Job as v1Job from hikaru.model.rel_1_26.v1 import Namespace as v1Namespace @@ -51,11 +49,7 @@ from hikaru.utils import Response from pydantic import BaseModel -from robusta.integrations.kubernetes.custom_models import ( - RobustaDeployment, - RobustaJob, - RobustaPod, -) +from robusta.integrations.kubernetes.custom_models import RobustaDeployment, RobustaJob, RobustaPod from ....core.model.events import ExecutionBaseEvent, ExecutionEventBaseParams from ....core.reporting.base import FindingSubject diff --git a/src/robusta/integrations/kubernetes/autogenerated/models.py b/src/robusta/integrations/kubernetes/autogenerated/models.py index 8c66274f7..253cc394b 100644 --- a/src/robusta/integrations/kubernetes/autogenerated/models.py +++ b/src/robusta/integrations/kubernetes/autogenerated/models.py @@ -1,9 +1,8 @@ # This file was autogenerated. Do not edit. from robusta.integrations.kubernetes.autogenerated.v1.models import KIND_TO_MODEL_CLASS as v1 -VERSION_KIND_TO_MODEL_CLASS = { - "v1": v1 -} + +VERSION_KIND_TO_MODEL_CLASS = {"v1": v1} def get_api_version(apiVersion: str): diff --git a/src/robusta/integrations/kubernetes/autogenerated/triggers.py b/src/robusta/integrations/kubernetes/autogenerated/triggers.py index 06cec6e3f..3e348e52c 100644 --- a/src/robusta/integrations/kubernetes/autogenerated/triggers.py +++ b/src/robusta/integrations/kubernetes/autogenerated/triggers.py @@ -12,7 +12,7 @@ # Pod Triggers class PodAllChangesTrigger(K8sBaseTrigger): kind: Literal["Pod"] = "Pod" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -21,7 +21,7 @@ def get_execution_event_type() -> type: class PodCreateTrigger(K8sBaseTrigger): kind: Literal["Pod"] = "Pod" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -30,7 +30,7 @@ def get_execution_event_type() -> type: class PodDeleteTrigger(K8sBaseTrigger): kind: Literal["Pod"] = "Pod" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -39,7 +39,7 @@ def get_execution_event_type() -> type: class PodUpdateTrigger(K8sBaseTrigger): kind: Literal["Pod"] = "Pod" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -49,7 +49,7 @@ def get_execution_event_type() -> type: # ReplicaSet Triggers class ReplicaSetAllChangesTrigger(K8sBaseTrigger): kind: Literal["ReplicaSet"] = "ReplicaSet" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -58,7 +58,7 @@ def get_execution_event_type() -> type: class ReplicaSetCreateTrigger(K8sBaseTrigger): kind: Literal["ReplicaSet"] = "ReplicaSet" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -67,7 +67,7 @@ def get_execution_event_type() -> type: class ReplicaSetDeleteTrigger(K8sBaseTrigger): kind: Literal["ReplicaSet"] = "ReplicaSet" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -76,7 +76,7 @@ def get_execution_event_type() -> type: class ReplicaSetUpdateTrigger(K8sBaseTrigger): kind: Literal["ReplicaSet"] = "ReplicaSet" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -86,7 +86,7 @@ def get_execution_event_type() -> type: # DaemonSet Triggers class DaemonSetAllChangesTrigger(K8sBaseTrigger): kind: Literal["DaemonSet"] = "DaemonSet" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -95,7 +95,7 @@ def get_execution_event_type() -> type: class DaemonSetCreateTrigger(K8sBaseTrigger): kind: Literal["DaemonSet"] = "DaemonSet" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -104,7 +104,7 @@ def get_execution_event_type() -> type: class DaemonSetDeleteTrigger(K8sBaseTrigger): kind: Literal["DaemonSet"] = "DaemonSet" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -113,7 +113,7 @@ def get_execution_event_type() -> type: class DaemonSetUpdateTrigger(K8sBaseTrigger): kind: Literal["DaemonSet"] = "DaemonSet" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -123,7 +123,7 @@ def get_execution_event_type() -> type: # Deployment Triggers class DeploymentAllChangesTrigger(K8sBaseTrigger): kind: Literal["Deployment"] = "Deployment" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -132,7 +132,7 @@ def get_execution_event_type() -> type: class DeploymentCreateTrigger(K8sBaseTrigger): kind: Literal["Deployment"] = "Deployment" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -141,7 +141,7 @@ def get_execution_event_type() -> type: class DeploymentDeleteTrigger(K8sBaseTrigger): kind: Literal["Deployment"] = "Deployment" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -150,7 +150,7 @@ def get_execution_event_type() -> type: class DeploymentUpdateTrigger(K8sBaseTrigger): kind: Literal["Deployment"] = "Deployment" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -160,7 +160,7 @@ def get_execution_event_type() -> type: # StatefulSet Triggers class StatefulSetAllChangesTrigger(K8sBaseTrigger): kind: Literal["StatefulSet"] = "StatefulSet" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -169,7 +169,7 @@ def get_execution_event_type() -> type: class StatefulSetCreateTrigger(K8sBaseTrigger): kind: Literal["StatefulSet"] = "StatefulSet" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -178,7 +178,7 @@ def get_execution_event_type() -> type: class StatefulSetDeleteTrigger(K8sBaseTrigger): kind: Literal["StatefulSet"] = "StatefulSet" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -187,7 +187,7 @@ def get_execution_event_type() -> type: class StatefulSetUpdateTrigger(K8sBaseTrigger): kind: Literal["StatefulSet"] = "StatefulSet" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -197,7 +197,7 @@ def get_execution_event_type() -> type: # Service Triggers class ServiceAllChangesTrigger(K8sBaseTrigger): kind: Literal["Service"] = "Service" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -206,7 +206,7 @@ def get_execution_event_type() -> type: class ServiceCreateTrigger(K8sBaseTrigger): kind: Literal["Service"] = "Service" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -215,7 +215,7 @@ def get_execution_event_type() -> type: class ServiceDeleteTrigger(K8sBaseTrigger): kind: Literal["Service"] = "Service" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -224,7 +224,7 @@ def get_execution_event_type() -> type: class ServiceUpdateTrigger(K8sBaseTrigger): kind: Literal["Service"] = "Service" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -234,7 +234,7 @@ def get_execution_event_type() -> type: # Event Triggers class EventAllChangesTrigger(K8sBaseTrigger): kind: Literal["Event"] = "Event" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -243,7 +243,7 @@ def get_execution_event_type() -> type: class EventCreateTrigger(K8sBaseTrigger): kind: Literal["Event"] = "Event" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -252,7 +252,7 @@ def get_execution_event_type() -> type: class EventDeleteTrigger(K8sBaseTrigger): kind: Literal["Event"] = "Event" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -261,7 +261,7 @@ def get_execution_event_type() -> type: class EventUpdateTrigger(K8sBaseTrigger): kind: Literal["Event"] = "Event" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -271,7 +271,7 @@ def get_execution_event_type() -> type: # HorizontalPodAutoscaler Triggers class HorizontalPodAutoscalerAllChangesTrigger(K8sBaseTrigger): kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -280,7 +280,7 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerCreateTrigger(K8sBaseTrigger): kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -289,7 +289,7 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerDeleteTrigger(K8sBaseTrigger): kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -298,7 +298,7 @@ def get_execution_event_type() -> type: class HorizontalPodAutoscalerUpdateTrigger(K8sBaseTrigger): kind: Literal["HorizontalPodAutoscaler"] = "HorizontalPodAutoscaler" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -308,7 +308,7 @@ def get_execution_event_type() -> type: # Node Triggers class NodeAllChangesTrigger(K8sBaseTrigger): kind: Literal["Node"] = "Node" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -317,7 +317,7 @@ def get_execution_event_type() -> type: class NodeCreateTrigger(K8sBaseTrigger): kind: Literal["Node"] = "Node" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -326,7 +326,7 @@ def get_execution_event_type() -> type: class NodeDeleteTrigger(K8sBaseTrigger): kind: Literal["Node"] = "Node" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -335,7 +335,7 @@ def get_execution_event_type() -> type: class NodeUpdateTrigger(K8sBaseTrigger): kind: Literal["Node"] = "Node" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -345,7 +345,7 @@ def get_execution_event_type() -> type: # ClusterRole Triggers class ClusterRoleAllChangesTrigger(K8sBaseTrigger): kind: Literal["ClusterRole"] = "ClusterRole" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -354,7 +354,7 @@ def get_execution_event_type() -> type: class ClusterRoleCreateTrigger(K8sBaseTrigger): kind: Literal["ClusterRole"] = "ClusterRole" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -363,7 +363,7 @@ def get_execution_event_type() -> type: class ClusterRoleDeleteTrigger(K8sBaseTrigger): kind: Literal["ClusterRole"] = "ClusterRole" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -372,7 +372,7 @@ def get_execution_event_type() -> type: class ClusterRoleUpdateTrigger(K8sBaseTrigger): kind: Literal["ClusterRole"] = "ClusterRole" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -382,7 +382,7 @@ def get_execution_event_type() -> type: # ClusterRoleBinding Triggers class ClusterRoleBindingAllChangesTrigger(K8sBaseTrigger): kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -391,7 +391,7 @@ def get_execution_event_type() -> type: class ClusterRoleBindingCreateTrigger(K8sBaseTrigger): kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -400,7 +400,7 @@ def get_execution_event_type() -> type: class ClusterRoleBindingDeleteTrigger(K8sBaseTrigger): kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -409,7 +409,7 @@ def get_execution_event_type() -> type: class ClusterRoleBindingUpdateTrigger(K8sBaseTrigger): kind: Literal["ClusterRoleBinding"] = "ClusterRoleBinding" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -419,7 +419,7 @@ def get_execution_event_type() -> type: # Job Triggers class JobAllChangesTrigger(K8sBaseTrigger): kind: Literal["Job"] = "Job" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -428,7 +428,7 @@ def get_execution_event_type() -> type: class JobCreateTrigger(K8sBaseTrigger): kind: Literal["Job"] = "Job" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -437,7 +437,7 @@ def get_execution_event_type() -> type: class JobDeleteTrigger(K8sBaseTrigger): kind: Literal["Job"] = "Job" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -446,7 +446,7 @@ def get_execution_event_type() -> type: class JobUpdateTrigger(K8sBaseTrigger): kind: Literal["Job"] = "Job" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -456,7 +456,7 @@ def get_execution_event_type() -> type: # Namespace Triggers class NamespaceAllChangesTrigger(K8sBaseTrigger): kind: Literal["Namespace"] = "Namespace" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -465,7 +465,7 @@ def get_execution_event_type() -> type: class NamespaceCreateTrigger(K8sBaseTrigger): kind: Literal["Namespace"] = "Namespace" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -474,7 +474,7 @@ def get_execution_event_type() -> type: class NamespaceDeleteTrigger(K8sBaseTrigger): kind: Literal["Namespace"] = "Namespace" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -483,7 +483,7 @@ def get_execution_event_type() -> type: class NamespaceUpdateTrigger(K8sBaseTrigger): kind: Literal["Namespace"] = "Namespace" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -493,7 +493,7 @@ def get_execution_event_type() -> type: # ServiceAccount Triggers class ServiceAccountAllChangesTrigger(K8sBaseTrigger): kind: Literal["ServiceAccount"] = "ServiceAccount" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -502,7 +502,7 @@ def get_execution_event_type() -> type: class ServiceAccountCreateTrigger(K8sBaseTrigger): kind: Literal["ServiceAccount"] = "ServiceAccount" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -511,7 +511,7 @@ def get_execution_event_type() -> type: class ServiceAccountDeleteTrigger(K8sBaseTrigger): kind: Literal["ServiceAccount"] = "ServiceAccount" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -520,7 +520,7 @@ def get_execution_event_type() -> type: class ServiceAccountUpdateTrigger(K8sBaseTrigger): kind: Literal["ServiceAccount"] = "ServiceAccount" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -530,7 +530,7 @@ def get_execution_event_type() -> type: # PersistentVolume Triggers class PersistentVolumeAllChangesTrigger(K8sBaseTrigger): kind: Literal["PersistentVolume"] = "PersistentVolume" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -539,7 +539,7 @@ def get_execution_event_type() -> type: class PersistentVolumeCreateTrigger(K8sBaseTrigger): kind: Literal["PersistentVolume"] = "PersistentVolume" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -548,7 +548,7 @@ def get_execution_event_type() -> type: class PersistentVolumeDeleteTrigger(K8sBaseTrigger): kind: Literal["PersistentVolume"] = "PersistentVolume" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -557,7 +557,7 @@ def get_execution_event_type() -> type: class PersistentVolumeUpdateTrigger(K8sBaseTrigger): kind: Literal["PersistentVolume"] = "PersistentVolume" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -567,7 +567,7 @@ def get_execution_event_type() -> type: # PersistentVolumeClaim Triggers class PersistentVolumeClaimAllChangesTrigger(K8sBaseTrigger): kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -576,7 +576,7 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimCreateTrigger(K8sBaseTrigger): kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -585,7 +585,7 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimDeleteTrigger(K8sBaseTrigger): kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -594,7 +594,7 @@ def get_execution_event_type() -> type: class PersistentVolumeClaimUpdateTrigger(K8sBaseTrigger): kind: Literal["PersistentVolumeClaim"] = "PersistentVolumeClaim" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -604,7 +604,7 @@ def get_execution_event_type() -> type: # NetworkPolicy Triggers class NetworkPolicyAllChangesTrigger(K8sBaseTrigger): kind: Literal["NetworkPolicy"] = "NetworkPolicy" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -613,7 +613,7 @@ def get_execution_event_type() -> type: class NetworkPolicyCreateTrigger(K8sBaseTrigger): kind: Literal["NetworkPolicy"] = "NetworkPolicy" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -622,7 +622,7 @@ def get_execution_event_type() -> type: class NetworkPolicyDeleteTrigger(K8sBaseTrigger): kind: Literal["NetworkPolicy"] = "NetworkPolicy" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -631,7 +631,7 @@ def get_execution_event_type() -> type: class NetworkPolicyUpdateTrigger(K8sBaseTrigger): kind: Literal["NetworkPolicy"] = "NetworkPolicy" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -641,7 +641,7 @@ def get_execution_event_type() -> type: # ConfigMap Triggers class ConfigMapAllChangesTrigger(K8sBaseTrigger): kind: Literal["ConfigMap"] = "ConfigMap" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -650,7 +650,7 @@ def get_execution_event_type() -> type: class ConfigMapCreateTrigger(K8sBaseTrigger): kind: Literal["ConfigMap"] = "ConfigMap" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -659,7 +659,7 @@ def get_execution_event_type() -> type: class ConfigMapDeleteTrigger(K8sBaseTrigger): kind: Literal["ConfigMap"] = "ConfigMap" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -668,7 +668,7 @@ def get_execution_event_type() -> type: class ConfigMapUpdateTrigger(K8sBaseTrigger): kind: Literal["ConfigMap"] = "ConfigMap" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -678,7 +678,7 @@ def get_execution_event_type() -> type: # Ingress Triggers class IngressAllChangesTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -687,7 +687,7 @@ def get_execution_event_type() -> type: class IngressCreateTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -696,7 +696,7 @@ def get_execution_event_type() -> type: class IngressDeleteTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -705,7 +705,7 @@ def get_execution_event_type() -> type: class IngressUpdateTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -715,7 +715,7 @@ def get_execution_event_type() -> type: # Kubernetes Any Triggers class KubernetesAnyAllChangesTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = None + operation: Literal[None] = None @staticmethod def get_execution_event_type() -> type: @@ -724,7 +724,7 @@ def get_execution_event_type() -> type: class KubernetesAnyCreateTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = K8sOperationType.CREATE + operation: Literal[K8sOperationType.CREATE] = K8sOperationType.CREATE @staticmethod def get_execution_event_type() -> type: @@ -733,7 +733,7 @@ def get_execution_event_type() -> type: class KubernetesAnyDeleteTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = K8sOperationType.DELETE + operation: Literal[K8sOperationType.DELETE] = K8sOperationType.DELETE @staticmethod def get_execution_event_type() -> type: @@ -742,7 +742,7 @@ def get_execution_event_type() -> type: class KubernetesAnyUpdateTrigger(K8sBaseTrigger): kind: Literal["Ingress"] = "Ingress" - operation: Literal[K8sOperationType] = K8sOperationType.UPDATE + operation: Literal[K8sOperationType.UPDATE] = K8sOperationType.UPDATE @staticmethod def get_execution_event_type() -> type: @@ -751,6 +751,7 @@ def get_execution_event_type() -> type: # K8s Trigger class class K8sTriggers(BaseModel): + on_clusterrole_all_changes: Optional[ClusterRoleAllChangesTrigger] on_clusterrole_create: Optional[ClusterRoleCreateTrigger] on_clusterrole_delete: Optional[ClusterRoleDeleteTrigger] From a9eb78952d02bcc93a23ec344dac883c4cb32698 Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 20 Nov 2023 11:40:21 +0200 Subject: [PATCH 35/36] Fix bug when creating a playbook from scratch, not according to templates --- scripts/playbook_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/playbook_generator.py b/scripts/playbook_generator.py index 779e2c2e2..61061f909 100644 --- a/scripts/playbook_generator.py +++ b/scripts/playbook_generator.py @@ -168,7 +168,7 @@ def display_triggers(): if ss["trigger_name"] is None: return - initial_data = ss["trigger_data"] or triggers[ss["trigger_name"]] + initial_data = ss.get("trigger_data") or triggers[ss["trigger_name"]] ss["trigger_data"] = modified_pydantic_form( key=f"trigger_form-{ss['trigger_name']}", model=initial_data, From 2e9c34215adcec8b6b6a3aaecd6ce76d8cb1376f Mon Sep 17 00:00:00 2001 From: Robusta Runner Date: Mon, 20 Nov 2023 11:41:10 +0200 Subject: [PATCH 36/36] Fix another bug rendering triggers to yaml E.g. on_ingress_create didn't work because "create" couldn't be converted by streamlit pydantic to K8sOperationType.CREATE. If K8sOperationType is a StrEnum and not an Enum, it works. --- src/robusta/core/model/k8s_operation_type.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/robusta/core/model/k8s_operation_type.py b/src/robusta/core/model/k8s_operation_type.py index 61eabc3ca..bc62e6658 100644 --- a/src/robusta/core/model/k8s_operation_type.py +++ b/src/robusta/core/model/k8s_operation_type.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class K8sOperationType(Enum): +class K8sOperationType(StrEnum): CREATE = "create" UPDATE = "update" DELETE = "delete"