From d9cd2495a8348ebfa45fae32121a7b417fced939 Mon Sep 17 00:00:00 2001 From: LocalT0aster <90502400+LocalT0aster@users.noreply.github.com> Date: Thu, 19 Mar 2026 23:57:30 +0300 Subject: [PATCH 1/5] fix: vagrant github-runner provisioning --- vagrant/README.md | 12 +- vagrant/Vagrantfile | 2 + vagrant/shared/github-runner.env.example | 14 +- .../shared/provision-gh-runner-register.sh | 126 +++++++++++++++++- vagrant/shared/provision-gh-runner.sh | 2 +- 5 files changed, 145 insertions(+), 11 deletions(-) diff --git a/vagrant/README.md b/vagrant/README.md index 24174798f9..1b44c25725 100644 --- a/vagrant/README.md +++ b/vagrant/README.md @@ -113,14 +113,16 @@ cp shared/github-runner.env.example shared/github-runner.env 2. Edit `shared/github-runner.env` and fill in: - `GH_RUNNER_URL` -- `GH_RUNNER_TOKEN` +- `GH_RUNNER_API_TOKEN` or `GH_RUNNER_TOKEN` - optional runner name / labels / group / workdir -If the runner VM is already running, sync the updated file into the guest: +`GH_RUNNER_API_TOKEN` is the safer option because the provisioner will exchange it for a fresh one-hour runner registration token every time it runs. For a repository runner, GitHub's REST API requires a token that can create registration tokens for that repository. For a fine-grained PAT, that means repository `Administration: write`. A manually copied `GH_RUNNER_TOKEN` still works, but it expires after one hour and must be refreshed before provisioning. -```bash -vagrant rsync github-runner -``` +> ❗ If the runner VM is already running, don't forget to sync the updated shared files into the guest: +> +> ```bash +> vagrant rsync github-runner +> ``` 3. Run the registration provisioner: diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index f6bc680c11..80152c12e6 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -11,6 +11,8 @@ Vagrant.configure("2") do |config| "GH_RUNNER_VERSION" => ENV.fetch("GH_RUNNER_VERSION", ""), "GH_RUNNER_URL" => ENV.fetch("GH_RUNNER_URL", ""), "GH_RUNNER_TOKEN" => ENV.fetch("GH_RUNNER_TOKEN", ""), + "GH_RUNNER_API_TOKEN" => ENV.fetch("GH_RUNNER_API_TOKEN", ""), + "GH_RUNNER_API_URL" => ENV.fetch("GH_RUNNER_API_URL", ""), "GH_RUNNER_NAME" => ENV.fetch("GH_RUNNER_NAME", ""), "GH_RUNNER_LABELS" => ENV.fetch("GH_RUNNER_LABELS", ""), "GH_RUNNER_GROUP" => ENV.fetch("GH_RUNNER_GROUP", ""), diff --git a/vagrant/shared/github-runner.env.example b/vagrant/shared/github-runner.env.example index 7c750fba09..4e1c1b215f 100644 --- a/vagrant/shared/github-runner.env.example +++ b/vagrant/shared/github-runner.env.example @@ -3,7 +3,19 @@ # vagrant provision github-runner --provision-with github-runner-register GH_RUNNER_URL="https://github.com/OWNER/REPOSITORY" -GH_RUNNER_TOKEN="REPLACE_WITH_EPHEMERAL_REGISTRATION_TOKEN" + +# Preferred: a GitHub API token that can mint a fresh registration token during +# provisioning. For repository runners on github.com, a fine-grained PAT needs +# repository Administration: write. For organization runners, it needs +# organization Self-hosted runners: write. +# GH_RUNNER_API_TOKEN="github_pat_..." + +# Optional: override the API root for GitHub Enterprise Server instances. +# GH_RUNNER_API_URL="https://github.example.com/api/v3" + +# Fallback: a time-limited registration token copied from GitHub. This expires +# after one hour, so stale values will fail during runner registration. +GH_RUNNER_TOKEN="" # Optional overrides GH_RUNNER_NAME="github-runner-s26" diff --git a/vagrant/shared/provision-gh-runner-register.sh b/vagrant/shared/provision-gh-runner-register.sh index be6902328a..ac29aecad1 100644 --- a/vagrant/shared/provision-gh-runner-register.sh +++ b/vagrant/shared/provision-gh-runner-register.sh @@ -13,24 +13,141 @@ if [ -f /shared/github-runner.env ]; then set +a fi -if [ ! -f /shared/github-runner.env ] && [ -z "${GH_RUNNER_URL:-}" ] && [ -z "${GH_RUNNER_TOKEN:-}" ]; then +if [ ! -f /shared/github-runner.env ] && [ -z "${GH_RUNNER_URL:-}" ] && [ -z "${GH_RUNNER_TOKEN:-}" ] && [ -z "${GH_RUNNER_API_TOKEN:-}" ]; then cat <<'EOF' >&2 Runner configuration is missing inside the guest. If you created vagrant/shared/github-runner.env on the host after the VM was already running, sync it first with: vagrant rsync github-runner -Or bypass the shared file and pass GH_RUNNER_URL / GH_RUNNER_TOKEN in the host environment. +Or bypass the shared file and pass GH_RUNNER_URL plus GH_RUNNER_API_TOKEN or GH_RUNNER_TOKEN in the host environment. EOF fi : "${GH_RUNNER_URL:?Set GH_RUNNER_URL in /shared/github-runner.env or the host environment.}" -: "${GH_RUNNER_TOKEN:?Set GH_RUNNER_TOKEN in /shared/github-runner.env or the host environment.}" + +if [ -z "${GH_RUNNER_TOKEN:-}" ] && [ -z "${GH_RUNNER_API_TOKEN:-}" ]; then + echo "Set GH_RUNNER_API_TOKEN (preferred) or GH_RUNNER_TOKEN in /shared/github-runner.env or the host environment." >&2 + exit 1 +fi if [ ! -x /opt/actions-runner/config.sh ]; then echo "GitHub runner is not installed. Run the base provisioner first." >&2 exit 1 fi +runner_url="${GH_RUNNER_URL%/}" +case "$runner_url" in + https://*) + runner_scheme="https" + ;; + http://*) + runner_scheme="http" + ;; + *) + echo "GH_RUNNER_URL must start with http:// or https:// and point to a repository or organization root." >&2 + exit 1 + ;; +esac + +runner_url_no_scheme="${runner_url#*://}" +runner_host="${runner_url_no_scheme%%/*}" +runner_path="" +if [ "$runner_url_no_scheme" != "$runner_host" ]; then + runner_path="/${runner_url_no_scheme#*/}" +fi +runner_path="${runner_path%%\?*}" +runner_path="${runner_path%%\#*}" +runner_path="${runner_path%/}" + +IFS='/' read -r runner_segment1 runner_segment2 runner_segment3 _runner_extra <<< "${runner_path#/}" + +if [ -z "${runner_segment1:-}" ]; then + echo "GH_RUNNER_URL must point to a repository or organization root, for example https://github.com/OWNER/REPOSITORY." >&2 + exit 1 +fi + +if [ -n "${runner_segment3:-}" ] || [ -n "${_runner_extra:-}" ]; then + echo "GH_RUNNER_URL must be a repository or organization root URL, not a deeper settings page." >&2 + exit 1 +fi + +runner_scope="organization" +runner_owner="$runner_segment1" +runner_repo="" +if [ -n "${runner_segment2:-}" ]; then + runner_scope="repository" + runner_repo="${runner_segment2%.git}" +fi + +runner_api_base="${GH_RUNNER_API_URL:-}" +if [ -z "$runner_api_base" ]; then + if [ "$runner_host" = "github.com" ]; then + runner_api_base="https://api.github.com" + else + runner_api_base="${runner_scheme}://${runner_host}/api/v3" + fi +fi +runner_api_base="${runner_api_base%/}" + +create_registration_token() { + local endpoint response http_code body token expires_at message + + if [ -n "${GH_RUNNER_API_TOKEN:-}" ]; then + case "$runner_scope" in + repository) + endpoint="${runner_api_base}/repos/${runner_owner}/${runner_repo}/actions/runners/registration-token" + ;; + organization) + endpoint="${runner_api_base}/orgs/${runner_owner}/actions/runners/registration-token" + ;; + *) + echo "Unsupported runner scope: $runner_scope" >&2 + exit 1 + ;; + esac + + response="$( + curl -sS -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${GH_RUNNER_API_TOKEN}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + "$endpoint" \ + -w $'\n%{http_code}' + )" + + http_code="${response##*$'\n'}" + body="${response%$'\n'*}" + + if [ "$http_code" -lt 200 ] || [ "$http_code" -ge 300 ]; then + message="$(printf '%s' "$body" | jq -r '.message // empty' 2>/dev/null || true)" + echo "Failed to create a runner registration token from ${endpoint} (HTTP ${http_code})." >&2 + if [ -n "$message" ]; then + echo "GitHub API message: ${message}" >&2 + fi + echo "Check that GH_RUNNER_API_TOKEN has admin access to the target and the required runner permissions." >&2 + exit 1 + fi + + token="$(printf '%s' "$body" | jq -r '.token // empty')" + expires_at="$(printf '%s' "$body" | jq -r '.expires_at // empty')" + if [ -z "$token" ]; then + echo "GitHub did not return a runner registration token." >&2 + exit 1 + fi + + export RUNNER_TOKEN="$token" + if [ -n "$expires_at" ]; then + echo "Generated a fresh runner registration token via the GitHub API (expires at ${expires_at})." + else + echo "Generated a fresh runner registration token via the GitHub API." + fi + return 0 + fi + + export RUNNER_TOKEN="${GH_RUNNER_TOKEN}" + echo "Using GH_RUNNER_TOKEN from the environment. GitHub runner registration tokens expire after one hour." +} + runner_name="${GH_RUNNER_NAME:-$(hostname -s)}" runner_labels="${GH_RUNNER_LABELS:-self-hosted,linux,vagrant}" runner_group="${GH_RUNNER_GROUP:-Default}" @@ -38,7 +155,6 @@ runner_workdir="${GH_RUNNER_WORKDIR:-_work}" runner_disable_update="${GH_RUNNER_DISABLE_UPDATE:-false}" export RUNNER_URL="$GH_RUNNER_URL" -export RUNNER_TOKEN="$GH_RUNNER_TOKEN" export RUNNER_NAME="$runner_name" export RUNNER_LABELS="$runner_labels" export RUNNER_GROUP="$runner_group" @@ -46,6 +162,7 @@ export RUNNER_WORKDIR="$runner_workdir" export RUNNER_DISABLE_UPDATE="$runner_disable_update" if [ ! -f /opt/actions-runner/.runner ]; then + create_registration_token sudo -u github-runner --preserve-env=RUNNER_URL,RUNNER_TOKEN,RUNNER_NAME,RUNNER_LABELS,RUNNER_GROUP,RUNNER_WORKDIR,RUNNER_DISABLE_UPDATE bash <<'EOF' set -euo pipefail cd /opt/actions-runner @@ -98,3 +215,4 @@ for service_unit in "${service_units[@]}"; do done echo "GitHub runner configured and started successfully." +# diff --git a/vagrant/shared/provision-gh-runner.sh b/vagrant/shared/provision-gh-runner.sh index fe22cd89e2..0e58c5c2d2 100644 --- a/vagrant/shared/provision-gh-runner.sh +++ b/vagrant/shared/provision-gh-runner.sh @@ -85,7 +85,7 @@ if [ ! -f /shared/github-runner.env ]; then cat <<'EOF' GitHub runner base installation complete. Create /shared/github-runner.env from /shared/github-runner.env.example, -fill in GH_RUNNER_URL and GH_RUNNER_TOKEN, then run: +fill in GH_RUNNER_URL and either GH_RUNNER_API_TOKEN (preferred) or GH_RUNNER_TOKEN, then run: vagrant provision github-runner --provision-with github-runner-register EOF fi From 806c77e06e735819df6014a4ece9221e657938c6 Mon Sep 17 00:00:00 2001 From: LocalT0aster <90502400+LocalT0aster@users.noreply.github.com> Date: Fri, 20 Mar 2026 01:59:41 +0300 Subject: [PATCH 2/5] task 1 --- app_python/README.md | 5 +- app_python/docs/LAB08.md | 138 ++++++++ app_python/poetry.lock | 501 +++++++++++++++-------------- app_python/pyproject.toml | 33 +- app_python/src/metrics.py | 119 +++++++ app_python/src/router.py | 22 +- app_python/tests/test_endpoints.py | 1 + app_python/tests/test_metrics.py | 106 ++++++ 8 files changed, 673 insertions(+), 252 deletions(-) create mode 100644 app_python/docs/LAB08.md create mode 100644 app_python/src/metrics.py create mode 100644 app_python/tests/test_metrics.py diff --git a/app_python/README.md b/app_python/README.md index 1415a24a2a..dd63b7a64a 100644 --- a/app_python/README.md +++ b/app_python/README.md @@ -4,11 +4,11 @@ ## Overview -Small Flask web service that reports service metadata, system information, runtime uptime, and basic request details. Includes a simple health check endpoint for monitoring. +Small Flask web service that reports service metadata, system information, runtime uptime, and basic request details. Includes health and Prometheus metrics endpoints for monitoring. ## Prerequisites -- Python 3.13+ +- Python 3.14+ - Poetry ## Installation @@ -54,6 +54,7 @@ Gunicorn access logs are emitted as JSON so Loki can parse request fields cleanl - `GET /` - Service and system information - `GET /health` - Health check +- `GET /metrics` - Prometheus metrics exposition ## Configuration diff --git a/app_python/docs/LAB08.md b/app_python/docs/LAB08.md new file mode 100644 index 0000000000..1d947a2350 --- /dev/null +++ b/app_python/docs/LAB08.md @@ -0,0 +1,138 @@ +# LAB08 - Metrics and Monitoring (Task 1) + +## 1. Overview + +Prometheus instrumentation was added to the Flask service using `prometheus-client==0.23.1`. + +Implemented metrics: + +- `http_requests_total` counter with `method`, `endpoint`, and `status_code` +- `http_request_duration_seconds` histogram with `method`, `endpoint`, and `status_code` +- `http_requests_in_progress` gauge with `method` and `endpoint` +- `devops_info_endpoint_calls_total` counter for application endpoint usage +- `devops_info_system_info_duration_seconds` histogram for system-info collection latency + +Labeling choice: + +- Matched routes use normalized Flask rules such as `/`, `/health`, and `/metrics` +- Unmatched requests are grouped under `endpoint="unmatched"` to keep label cardinality low +- The in-progress gauge does not include `status_code` because that value does not exist until a response is produced + +## 2. Verification + +Install and run with the project-local Poetry binary: + +```bash +cd app_python +.venv/bin/poetry install --with dev +.venv/bin/poetry run pytest +.venv/bin/poetry run gunicorn --config gunicorn.conf.py src.main:app +``` + +Generate a few requests, then inspect metrics: + +```bash +curl -fSsL http://127.0.0.1:5000/ | jq +curl -fSsL http://127.0.0.1:5000/health | jq +curl -fSsL http://127.0.0.1:5000/metrics +``` + +
+/metrics output + +```text +$ curl -fSsL http://127.0.0.1:5000/metrics +# HELP http_requests_total Total HTTP requests handled by the service. +# TYPE http_requests_total counter +http_requests_total{endpoint="/",method="GET",status_code="200"} 6.0 +http_requests_total{endpoint="/health",method="GET",status_code="200"} 6.0 +# HELP http_requests_created Total HTTP requests handled by the service. +# TYPE http_requests_created gauge +http_requests_created{endpoint="/",method="GET",status_code="200"} 1.7739616481696362e+09 +http_requests_created{endpoint="/health",method="GET",status_code="200"} 1.7739616482041702e+09 +# HELP http_request_duration_seconds HTTP request duration in seconds. +# TYPE http_request_duration_seconds histogram +http_request_duration_seconds_bucket{endpoint="/",le="0.005",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.01",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.025",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.05",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.075",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.1",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.25",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.5",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="0.75",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="1.0",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="2.5",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="5.0",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="7.5",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="10.0",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/",le="+Inf",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_count{endpoint="/",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_sum{endpoint="/",method="GET",status_code="200"} 0.0015464909993170295 +http_request_duration_seconds_bucket{endpoint="/health",le="0.005",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.01",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.025",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.05",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.075",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.1",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.25",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.5",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="0.75",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="1.0",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="2.5",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="5.0",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="7.5",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="10.0",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_bucket{endpoint="/health",le="+Inf",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_count{endpoint="/health",method="GET",status_code="200"} 6.0 +http_request_duration_seconds_sum{endpoint="/health",method="GET",status_code="200"} 0.0019912700008717366 +# HELP http_request_duration_seconds_created HTTP request duration in seconds. +# TYPE http_request_duration_seconds_created gauge +http_request_duration_seconds_created{endpoint="/",method="GET",status_code="200"} 1.7739616481696527e+09 +http_request_duration_seconds_created{endpoint="/health",method="GET",status_code="200"} 1.7739616482041845e+09 +# HELP http_requests_in_progress HTTP requests currently being processed. +# TYPE http_requests_in_progress gauge +http_requests_in_progress{endpoint="/",method="GET"} 0.0 +http_requests_in_progress{endpoint="/health",method="GET"} 0.0 +http_requests_in_progress{endpoint="/metrics",method="GET"} 1.0 +# HELP devops_info_endpoint_calls_total Total calls to application endpoints. +# TYPE devops_info_endpoint_calls_total counter +devops_info_endpoint_calls_total{endpoint="/"} 6.0 +devops_info_endpoint_calls_total{endpoint="/health"} 6.0 +devops_info_endpoint_calls_total{endpoint="/metrics"} 1.0 +# HELP devops_info_endpoint_calls_created Total calls to application endpoints. +# TYPE devops_info_endpoint_calls_created gauge +devops_info_endpoint_calls_created{endpoint="/"} 1.773961648169205e+09 +devops_info_endpoint_calls_created{endpoint="/health"} 1.7739616482040732e+09 +devops_info_endpoint_calls_created{endpoint="/metrics"} 1.7739616631203315e+09 +# HELP devops_info_system_info_duration_seconds Time spent collecting system information. +# TYPE devops_info_system_info_duration_seconds histogram +devops_info_system_info_duration_seconds_bucket{le="0.005"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.01"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.025"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.05"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.075"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.1"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.25"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.5"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="0.75"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="1.0"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="2.5"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="5.0"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="7.5"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="10.0"} 6.0 +devops_info_system_info_duration_seconds_bucket{le="+Inf"} 6.0 +devops_info_system_info_duration_seconds_count 6.0 +devops_info_system_info_duration_seconds_sum 0.00042895499973383266 +# HELP devops_info_system_info_duration_seconds_created Time spent collecting system information. +# TYPE devops_info_system_info_duration_seconds_created gauge +devops_info_system_info_duration_seconds_created 1.7739616389214125e+09 +``` + +
+ +## 3. Notes + +- HTTP metrics are captured with Flask request hooks so 2xx, 4xx, and 5xx responses are all measured consistently. +- Application-specific metrics are recorded in route handlers and around system-info collection. +- Automated tests cover `/metrics` exposure plus label handling for `200`, `404`, and `500` responses. diff --git a/app_python/poetry.lock b/app_python/poetry.lock index e4918ed237..748bfe2685 100644 --- a/app_python/poetry.lock +++ b/app_python/poetry.lock @@ -14,137 +14,153 @@ files = [ [[package]] name = "certifi" -version = "2026.1.4" +version = "2026.2.25" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["main"] files = [ - {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, - {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, + {file = "certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa"}, + {file = "certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7"}, ] [[package]] name = "charset-normalizer" -version = "3.4.4" +version = "3.4.6" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" groups = ["main"] files = [ - {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"}, - {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"}, - {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"}, - {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"}, - {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"}, - {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"}, - {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"}, - {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"}, - {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"}, - {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2e1d8ca8611099001949d1cdfaefc510cf0f212484fe7c565f735b68c78c3c95"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e25369dc110d58ddf29b949377a93e0716d72a24f62bad72b2b39f155949c1fd"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:259695e2ccc253feb2a016303543d691825e920917e31f894ca1a687982b1de4"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dda86aba335c902b6149a02a55b38e96287157e609200811837678214ba2b1db"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fb3c322c81d20567019778cb5a4a6f2dc1c200b886bc0d636238e364848c89"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:4482481cb0572180b6fd976a4d5c72a30263e98564da68b86ec91f0fe35e8565"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39f5068d35621da2881271e5c3205125cc456f54e9030d3f723288c873a71bf9"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8bea55c4eef25b0b19a0337dc4e3f9a15b00d569c77211fa8cde38684f234fb7"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f0cdaecd4c953bfae0b6bb64910aaaca5a424ad9c72d85cb88417bb9814f7550"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:150b8ce8e830eb7ccb029ec9ca36022f756986aaaa7956aad6d9ec90089338c0"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e68c14b04827dd76dcbd1aeea9e604e3e4b78322d8faf2f8132c7138efa340a8"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3778fd7d7cd04ae8f54651f4a7a0bd6e39a0cf20f801720a4c21d80e9b7ad6b0"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dad6e0f2e481fffdcf776d10ebee25e0ef89f16d691f1e5dee4b586375fdc64b"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win32.whl", hash = "sha256:74a2e659c7ecbc73562e2a15e05039f1e22c75b7c7618b4b574a3ea9118d1557"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win_amd64.whl", hash = "sha256:aa9cccf4a44b9b62d8ba8b4dd06c649ba683e4bf04eea606d2e94cfc2d6ff4d6"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win_arm64.whl", hash = "sha256:e985a16ff513596f217cee86c21371b8cd011c0f6f056d0920aa2d926c544058"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:82060f995ab5003a2d6e0f4ad29065b7672b6593c8c63559beefe5b443242c3e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60c74963d8350241a79cb8feea80e54d518f72c26db618862a8f53e5023deaf9"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6e4333fb15c83f7d1482a76d45a0818897b3d33f00efd215528ff7c51b8e35d"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bc72863f4d9aba2e8fd9085e63548a324ba706d2ea2c83b260da08a59b9482de"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9cc4fc6c196d6a8b76629a70ddfcd4635a6898756e2d9cac5565cf0654605d73"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:0c173ce3a681f309f31b87125fecec7a5d1347261ea11ebbb856fa6006b23c8c"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c907cdc8109f6c619e6254212e794d6548373cc40e1ec75e6e3823d9135d29cc"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:404a1e552cf5b675a87f0651f8b79f5f1e6fd100ee88dc612f89aa16abd4486f"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e3c701e954abf6fc03a49f7c579cc80c2c6cc52525340ca3186c41d3f33482ef"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7a6967aaf043bceabab5412ed6bd6bd26603dae84d5cb75bf8d9a74a4959d398"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5feb91325bbceade6afab43eb3b508c63ee53579fe896c77137ded51c6b6958e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b35b200d6a71b9839a46b9b7fff66b6638bb52fc9658aa58796b0326595d3021"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win32.whl", hash = "sha256:9ca4c0b502ab399ef89248a2c84c54954f77a070f28e546a85e91da627d1301e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:a9e68c9d88823b274cf1e72f28cb5dc89c990edf430b0bfd3e2fb0785bfeabf4"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:97d0235baafca5f2b09cf332cc275f021e694e8362c6bb9c96fc9a0eb74fc316"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win32.whl", hash = "sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win32.whl", hash = "sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win32.whl", hash = "sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win32.whl", hash = "sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:659a1e1b500fac8f2779dd9e1570464e012f43e580371470b45277a27baa7532"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f61aa92e4aad0be58eb6eb4e0c21acf32cf8065f4b2cae5665da756c4ceef982"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f50498891691e0864dc3da965f340fada0771f6142a378083dc4608f4ea513e2"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bf625105bb9eef28a56a943fec8c8a98aeb80e7d7db99bd3c388137e6eb2d237"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2bd9d128ef93637a5d7a6af25363cf5dec3fa21cf80e68055aad627f280e8afa"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux_2_31_armv7l.whl", hash = "sha256:d08ec48f0a1c48d75d0356cea971921848fb620fdeba805b28f937e90691209f"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1ed80ff870ca6de33f4d953fda4d55654b9a2b340ff39ab32fa3adbcd718f264"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f98059e4fcd3e3e4e2d632b7cf81c2faae96c43c60b569e9c621468082f1d104"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:ab30e5e3e706e3063bc6de96b118688cb10396b70bb9864a430f67df98c61ecc"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:d5f5d1e9def3405f60e3ca8232d56f35c98fb7bf581efcc60051ebf53cb8b611"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:461598cd852bfa5a61b09cae2b1c02e2efcd166ee5516e243d540ac24bfa68a7"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:71be7e0e01753a89cf024abf7ecb6bca2c81738ead80d43004d9b5e3f1244e64"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:df01808ee470038c3f8dc4f48620df7225c49c2d6639e38f96e6d6ac6e6f7b0e"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-win32.whl", hash = "sha256:69dd852c2f0ad631b8b60cfbe25a28c0058a894de5abb566619c205ce0550eae"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-win_amd64.whl", hash = "sha256:517ad0e93394ac532745129ceabdf2696b609ec9f87863d337140317ebce1c14"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:31215157227939b4fb3d740cd23fe27be0439afef67b785a1eb78a3ae69cba9e"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecbbd45615a6885fe3240eb9db73b9e62518b611850fdf8ab08bd56de7ad2b17"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c45a03a4c69820a399f1dda9e1d8fbf3562eda46e7720458180302021b08f778"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e8aeb10fcbe92767f0fa69ad5a72deca50d0dca07fbde97848997d778a50c9fe"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:54fae94be3d75f3e573c9a1b5402dc593de19377013c9a0e4285e3d402dd3a2a"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:2f7fdd9b6e6c529d6a2501a2d36b240109e78a8ceaef5687cfcfa2bbe671d297"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d1d02209e06550bdaef34af58e041ad71b88e624f5d825519da3a3308e22687"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8bc5f0687d796c05b1e28ab0d38a50e6309906ee09375dd3aff6a9c09dd6e8f4"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ee4ec14bc1680d6b0afab9aea2ef27e26d2024f18b24a2d7155a52b60da7e833"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d1a2ee9c1499fc8f86f4521f27a973c914b211ffa87322f4ee33bb35392da2c5"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:48696db7f18afb80a068821504296eb0787d9ce239b91ca15059d1d3eaacf13b"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4f41da960b196ea355357285ad1316a00099f22d0929fe168343b99b254729c9"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:802168e03fba8bbc5ce0d866d589e4b1ca751d06edee69f7f3a19c5a9fe6b597"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win32.whl", hash = "sha256:8761ac29b6c81574724322a554605608a9960769ea83d2c73e396f3df896ad54"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win_amd64.whl", hash = "sha256:1cf0a70018692f85172348fe06d3a4b63f94ecb055e13a00c644d368eb82e5b8"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win_arm64.whl", hash = "sha256:3516bbb8d42169de9e61b8520cbeeeb716f12f4ecfe3fd30a9919aa16c806ca8"}, + {file = "charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69"}, + {file = "charset_normalizer-3.4.6.tar.gz", hash = "sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6"}, ] [[package]] @@ -177,118 +193,118 @@ markers = {main = "platform_system == \"Windows\"", dev = "sys_platform == \"win [[package]] name = "coverage" -version = "7.13.4" +version = "7.13.5" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "coverage-7.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fc31c787a84f8cd6027eba44010517020e0d18487064cd3d8968941856d1415"}, - {file = "coverage-7.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a32ebc02a1805adf637fc8dec324b5cdacd2e493515424f70ee33799573d661b"}, - {file = "coverage-7.13.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e24f9156097ff9dc286f2f913df3a7f63c0e333dcafa3c196f2c18b4175ca09a"}, - {file = "coverage-7.13.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8041b6c5bfdc03257666e9881d33b1abc88daccaf73f7b6340fb7946655cd10f"}, - {file = "coverage-7.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a09cfa6a5862bc2fc6ca7c3def5b2926194a56b8ab78ffcf617d28911123012"}, - {file = "coverage-7.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:296f8b0af861d3970c2a4d8c91d48eb4dd4771bcef9baedec6a9b515d7de3def"}, - {file = "coverage-7.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e101609bcbbfb04605ea1027b10dc3735c094d12d40826a60f897b98b1c30256"}, - {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa3feb8db2e87ff5e6d00d7e1480ae241876286691265657b500886c98f38bda"}, - {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4fc7fa81bbaf5a02801b65346c8b3e657f1d93763e58c0abdf7c992addd81a92"}, - {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:33901f604424145c6e9c2398684b92e176c0b12df77d52db81c20abd48c3794c"}, - {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:bb28c0f2cf2782508a40cec377935829d5fcc3ad9a3681375af4e84eb34b6b58"}, - {file = "coverage-7.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d107aff57a83222ddbd8d9ee705ede2af2cc926608b57abed8ef96b50b7e8f9"}, - {file = "coverage-7.13.4-cp310-cp310-win32.whl", hash = "sha256:a6f94a7d00eb18f1b6d403c91a88fd58cfc92d4b16080dfdb774afc8294469bf"}, - {file = "coverage-7.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:2cb0f1e000ebc419632bbe04366a8990b6e32c4e0b51543a6484ffe15eaeda95"}, - {file = "coverage-7.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d490ba50c3f35dd7c17953c68f3270e7ccd1c6642e2d2afe2d8e720b98f5a053"}, - {file = "coverage-7.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:19bc3c88078789f8ef36acb014d7241961dbf883fd2533d18cb1e7a5b4e28b11"}, - {file = "coverage-7.13.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3998e5a32e62fdf410c0dbd3115df86297995d6e3429af80b8798aad894ca7aa"}, - {file = "coverage-7.13.4-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e264226ec98e01a8e1054314af91ee6cde0eacac4f465cc93b03dbe0bce2fd7"}, - {file = "coverage-7.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3aa4e7b9e416774b21797365b358a6e827ffadaaca81b69ee02946852449f00"}, - {file = "coverage-7.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71ca20079dd8f27fcf808817e281e90220475cd75115162218d0e27549f95fef"}, - {file = "coverage-7.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e2f25215f1a359ab17320b47bcdaca3e6e6356652e8256f2441e4ef972052903"}, - {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d65b2d373032411e86960604dc4edac91fdfb5dca539461cf2cbe78327d1e64f"}, - {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94eb63f9b363180aff17de3e7c8760c3ba94664ea2695c52f10111244d16a299"}, - {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e856bf6616714c3a9fbc270ab54103f4e685ba236fa98c054e8f87f266c93505"}, - {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:65dfcbe305c3dfe658492df2d85259e0d79ead4177f9ae724b6fb245198f55d6"}, - {file = "coverage-7.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b507778ae8a4c915436ed5c2e05b4a6cecfa70f734e19c22a005152a11c7b6a9"}, - {file = "coverage-7.13.4-cp311-cp311-win32.whl", hash = "sha256:784fc3cf8be001197b652d51d3fd259b1e2262888693a4636e18879f613a62a9"}, - {file = "coverage-7.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:2421d591f8ca05b308cf0092807308b2facbefe54af7c02ac22548b88b95c98f"}, - {file = "coverage-7.13.4-cp311-cp311-win_arm64.whl", hash = "sha256:79e73a76b854d9c6088fe5d8b2ebe745f8681c55f7397c3c0a016192d681045f"}, - {file = "coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459"}, - {file = "coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3"}, - {file = "coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634"}, - {file = "coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3"}, - {file = "coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa"}, - {file = "coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3"}, - {file = "coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a"}, - {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7"}, - {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc"}, - {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47"}, - {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985"}, - {file = "coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0"}, - {file = "coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246"}, - {file = "coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126"}, - {file = "coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d"}, - {file = "coverage-7.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b66a2da594b6068b48b2692f043f35d4d3693fb639d5ea8b39533c2ad9ac3ab9"}, - {file = "coverage-7.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3599eb3992d814d23b35c536c28df1a882caa950f8f507cef23d1cbf334995ac"}, - {file = "coverage-7.13.4-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:93550784d9281e374fb5a12bf1324cc8a963fd63b2d2f223503ef0fd4aa339ea"}, - {file = "coverage-7.13.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b720ce6a88a2755f7c697c23268ddc47a571b88052e6b155224347389fdf6a3b"}, - {file = "coverage-7.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b322db1284a2ed3aa28ffd8ebe3db91c929b7a333c0820abec3d838ef5b3525"}, - {file = "coverage-7.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f4594c67d8a7c89cf922d9df0438c7c7bb022ad506eddb0fdb2863359ff78242"}, - {file = "coverage-7.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:53d133df809c743eb8bce33b24bcababb371f4441340578cd406e084d94a6148"}, - {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76451d1978b95ba6507a039090ba076105c87cc76fc3efd5d35d72093964d49a"}, - {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f57b33491e281e962021de110b451ab8a24182589be17e12a22c79047935e23"}, - {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:1731dc33dc276dafc410a885cbf5992f1ff171393e48a21453b78727d090de80"}, - {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:bd60d4fe2f6fa7dff9223ca1bbc9f05d2b6697bc5961072e5d3b952d46e1b1ea"}, - {file = "coverage-7.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9181a3ccead280b828fae232df12b16652702b49d41e99d657f46cc7b1f6ec7a"}, - {file = "coverage-7.13.4-cp313-cp313-win32.whl", hash = "sha256:f53d492307962561ac7de4cd1de3e363589b000ab69617c6156a16ba7237998d"}, - {file = "coverage-7.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:e6f70dec1cc557e52df5306d051ef56003f74d56e9c4dd7ddb07e07ef32a84dd"}, - {file = "coverage-7.13.4-cp313-cp313-win_arm64.whl", hash = "sha256:fb07dc5da7e849e2ad31a5d74e9bece81f30ecf5a42909d0a695f8bd1874d6af"}, - {file = "coverage-7.13.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40d74da8e6c4b9ac18b15331c4b5ebc35a17069410cad462ad4f40dcd2d50c0d"}, - {file = "coverage-7.13.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4223b4230a376138939a9173f1bdd6521994f2aff8047fae100d6d94d50c5a12"}, - {file = "coverage-7.13.4-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1d4be36a5114c499f9f1f9195e95ebf979460dbe2d88e6816ea202010ba1c34b"}, - {file = "coverage-7.13.4-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:200dea7d1e8095cc6e98cdabe3fd1d21ab17d3cee6dab00cadbb2fe35d9c15b9"}, - {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8eb931ee8e6d8243e253e5ed7336deea6904369d2fd8ae6e43f68abbf167092"}, - {file = "coverage-7.13.4-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:75eab1ebe4f2f64d9509b984f9314d4aa788540368218b858dad56dc8f3e5eb9"}, - {file = "coverage-7.13.4-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c35eb28c1d085eb7d8c9b3296567a1bebe03ce72962e932431b9a61f28facf26"}, - {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb88b316ec33760714a4720feb2816a3a59180fd58c1985012054fa7aebee4c2"}, - {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7d41eead3cc673cbd38a4417deb7fd0b4ca26954ff7dc6078e33f6ff97bed940"}, - {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:fb26a934946a6afe0e326aebe0730cdff393a8bc0bbb65a2f41e30feddca399c"}, - {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:dae88bc0fc77edaa65c14be099bd57ee140cf507e6bfdeea7938457ab387efb0"}, - {file = "coverage-7.13.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:845f352911777a8e722bfce168958214951e07e47e5d5d9744109fa5fe77f79b"}, - {file = "coverage-7.13.4-cp313-cp313t-win32.whl", hash = "sha256:2fa8d5f8de70688a28240de9e139fa16b153cc3cbb01c5f16d88d6505ebdadf9"}, - {file = "coverage-7.13.4-cp313-cp313t-win_amd64.whl", hash = "sha256:9351229c8c8407645840edcc277f4a2d44814d1bc34a2128c11c2a031d45a5dd"}, - {file = "coverage-7.13.4-cp313-cp313t-win_arm64.whl", hash = "sha256:30b8d0512f2dc8c8747557e8fb459d6176a2c9e5731e2b74d311c03b78451997"}, - {file = "coverage-7.13.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:300deaee342f90696ed186e3a00c71b5b3d27bffe9e827677954f4ee56969601"}, - {file = "coverage-7.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29e3220258d682b6226a9b0925bc563ed9a1ebcff3cad30f043eceea7eaf2689"}, - {file = "coverage-7.13.4-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:391ee8f19bef69210978363ca930f7328081c6a0152f1166c91f0b5fdd2a773c"}, - {file = "coverage-7.13.4-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0dd7ab8278f0d58a0128ba2fca25824321f05d059c1441800e934ff2efa52129"}, - {file = "coverage-7.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78cdf0d578b15148b009ccf18c686aa4f719d887e76e6b40c38ffb61d264a552"}, - {file = "coverage-7.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:48685fee12c2eb3b27c62f2658e7ea21e9c3239cba5a8a242801a0a3f6a8c62a"}, - {file = "coverage-7.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4e83efc079eb39480e6346a15a1bcb3e9b04759c5202d157e1dd4303cd619356"}, - {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ecae9737b72408d6a950f7e525f30aca12d4bd8dd95e37342e5beb3a2a8c4f71"}, - {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ae4578f8528569d3cf303fef2ea569c7f4c4059a38c8667ccef15c6e1f118aa5"}, - {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:6fdef321fdfbb30a197efa02d48fcd9981f0d8ad2ae8903ac318adc653f5df98"}, - {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b0f6ccf3dbe577170bebfce1318707d0e8c3650003cb4b3a9dd744575daa8b5"}, - {file = "coverage-7.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75fcd519f2a5765db3f0e391eb3b7d150cce1a771bf4c9f861aeab86c767a3c0"}, - {file = "coverage-7.13.4-cp314-cp314-win32.whl", hash = "sha256:8e798c266c378da2bd819b0677df41ab46d78065fb2a399558f3f6cae78b2fbb"}, - {file = "coverage-7.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:245e37f664d89861cf2329c9afa2c1fe9e6d4e1a09d872c947e70718aeeac505"}, - {file = "coverage-7.13.4-cp314-cp314-win_arm64.whl", hash = "sha256:ad27098a189e5838900ce4c2a99f2fe42a0bf0c2093c17c69b45a71579e8d4a2"}, - {file = "coverage-7.13.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:85480adfb35ffc32d40918aad81b89c69c9cc5661a9b8a81476d3e645321a056"}, - {file = "coverage-7.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:79be69cf7f3bf9b0deeeb062eab7ac7f36cd4cc4c4dd694bd28921ba4d8596cc"}, - {file = "coverage-7.13.4-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:caa421e2684e382c5d8973ac55e4f36bed6821a9bad5c953494de960c74595c9"}, - {file = "coverage-7.13.4-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14375934243ee05f56c45393fe2ce81fe5cc503c07cee2bdf1725fb8bef3ffaf"}, - {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25a41c3104d08edb094d9db0d905ca54d0cd41c928bb6be3c4c799a54753af55"}, - {file = "coverage-7.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f01afcff62bf9a08fb32b2c1d6e924236c0383c02c790732b6537269e466a72"}, - {file = "coverage-7.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eb9078108fbf0bcdde37c3f4779303673c2fa1fe8f7956e68d447d0dd426d38a"}, - {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0e086334e8537ddd17e5f16a344777c1ab8194986ec533711cbe6c41cde841b6"}, - {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:725d985c5ab621268b2edb8e50dfe57633dc69bda071abc470fed55a14935fd3"}, - {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:3c06f0f1337c667b971ca2f975523347e63ec5e500b9aa5882d91931cd3ef750"}, - {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:590c0ed4bf8e85f745e6b805b2e1c457b2e33d5255dd9729743165253bc9ad39"}, - {file = "coverage-7.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:eb30bf180de3f632cd043322dad5751390e5385108b2807368997d1a92a509d0"}, - {file = "coverage-7.13.4-cp314-cp314t-win32.whl", hash = "sha256:c4240e7eded42d131a2d2c4dec70374b781b043ddc79a9de4d55ca71f8e98aea"}, - {file = "coverage-7.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4c7d3cc01e7350f2f0f6f7036caaf5673fb56b6998889ccfe9e1c1fe75a9c932"}, - {file = "coverage-7.13.4-cp314-cp314t-win_arm64.whl", hash = "sha256:23e3f687cf945070d1c90f85db66d11e3025665d8dafa831301a0e0038f3db9b"}, - {file = "coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0"}, - {file = "coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91"}, + {file = "coverage-7.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0723d2c96324561b9aa76fb982406e11d93cdb388a7a7da2b16e04719cf7ca5"}, + {file = "coverage-7.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:52f444e86475992506b32d4e5ca55c24fc88d73bcbda0e9745095b28ef4dc0cf"}, + {file = "coverage-7.13.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:704de6328e3d612a8f6c07000a878ff38181ec3263d5a11da1db294fa6a9bdf8"}, + {file = "coverage-7.13.5-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a1a6d79a14e1ec1832cabc833898636ad5f3754a678ef8bb4908515208bf84f4"}, + {file = "coverage-7.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79060214983769c7ba3f0cee10b54c97609dca4d478fa1aa32b914480fd5738d"}, + {file = "coverage-7.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:356e76b46783a98c2a2fe81ec79df4883a1e62895ea952968fb253c114e7f930"}, + {file = "coverage-7.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cef0cdec915d11254a7f549c1170afecce708d30610c6abdded1f74e581666d"}, + {file = "coverage-7.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dc022073d063b25a402454e5712ef9e007113e3a676b96c5f29b2bda29352f40"}, + {file = "coverage-7.13.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9b74db26dfea4f4e50d48a4602207cd1e78be33182bc9cbf22da94f332f99878"}, + {file = "coverage-7.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ad146744ca4fd09b50c482650e3c1b1f4dfa1d4792e0a04a369c7f23336f0400"}, + {file = "coverage-7.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c555b48be1853fe3997c11c4bd521cdd9a9612352de01fa4508f16ec341e6fe0"}, + {file = "coverage-7.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7034b5c56a58ae5e85f23949d52c14aca2cfc6848a31764995b7de88f13a1ea0"}, + {file = "coverage-7.13.5-cp310-cp310-win32.whl", hash = "sha256:eb7fdf1ef130660e7415e0253a01a7d5a88c9c4d158bcf75cbbd922fd65a5b58"}, + {file = "coverage-7.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:3e1bb5f6c78feeb1be3475789b14a0f0a5b47d505bfc7267126ccbd50289999e"}, + {file = "coverage-7.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66a80c616f80181f4d643b0f9e709d97bcea413ecd9631e1dedc7401c8e6695d"}, + {file = "coverage-7.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:145ede53ccbafb297c1c9287f788d1bc3efd6c900da23bf6931b09eafc931587"}, + {file = "coverage-7.13.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0672854dc733c342fa3e957e0605256d2bf5934feeac328da9e0b5449634a642"}, + {file = "coverage-7.13.5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ec10e2a42b41c923c2209b846126c6582db5e43a33157e9870ba9fb70dc7854b"}, + {file = "coverage-7.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be3d4bbad9d4b037791794ddeedd7d64a56f5933a2c1373e18e9e568b9141686"}, + {file = "coverage-7.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4d2afbc5cc54d286bfb54541aa50b64cdb07a718227168c87b9e2fb8f25e1743"}, + {file = "coverage-7.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3ad050321264c49c2fa67bb599100456fc51d004b82534f379d16445da40fb75"}, + {file = "coverage-7.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7300c8a6d13335b29bb76d7651c66af6bd8658517c43499f110ddc6717bfc209"}, + {file = "coverage-7.13.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:eb07647a5738b89baab047f14edd18ded523de60f3b30e75c2acc826f79c839a"}, + {file = "coverage-7.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9adb6688e3b53adffefd4a52d72cbd8b02602bfb8f74dcd862337182fd4d1a4e"}, + {file = "coverage-7.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7c8d4bc913dd70b93488d6c496c77f3aff5ea99a07e36a18f865bca55adef8bd"}, + {file = "coverage-7.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0e3c426ffc4cd952f54ee9ffbdd10345709ecc78a3ecfd796a57236bfad0b9b8"}, + {file = "coverage-7.13.5-cp311-cp311-win32.whl", hash = "sha256:259b69bb83ad9894c4b25be2528139eecba9a82646ebdda2d9db1ba28424a6bf"}, + {file = "coverage-7.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:258354455f4e86e3e9d0d17571d522e13b4e1e19bf0f8596bcf9476d61e7d8a9"}, + {file = "coverage-7.13.5-cp311-cp311-win_arm64.whl", hash = "sha256:bff95879c33ec8da99fc9b6fe345ddb5be6414b41d6d1ad1c8f188d26f36e028"}, + {file = "coverage-7.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:460cf0114c5016fa841214ff5564aa4864f11948da9440bc97e21ad1f4ba1e01"}, + {file = "coverage-7.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e223ce4b4ed47f065bfb123687686512e37629be25cc63728557ae7db261422"}, + {file = "coverage-7.13.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6e3370441f4513c6252bf042b9c36d22491142385049243253c7e48398a15a9f"}, + {file = "coverage-7.13.5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:03ccc709a17a1de074fb1d11f217342fb0d2b1582ed544f554fc9fc3f07e95f5"}, + {file = "coverage-7.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f4818d065964db3c1c66dc0fbdac5ac692ecbc875555e13374fdbe7eedb4376"}, + {file = "coverage-7.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:012d5319e66e9d5a218834642d6c35d265515a62f01157a45bcc036ecf947256"}, + {file = "coverage-7.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8dd02af98971bdb956363e4827d34425cb3df19ee550ef92855b0acb9c7ce51c"}, + {file = "coverage-7.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f08fd75c50a760c7eb068ae823777268daaf16a80b918fa58eea888f8e3919f5"}, + {file = "coverage-7.13.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:843ea8643cf967d1ac7e8ecd4bb00c99135adf4816c0c0593fdcc47b597fcf09"}, + {file = "coverage-7.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9d44d7aa963820b1b971dbecd90bfe5fe8f81cff79787eb6cca15750bd2f79b9"}, + {file = "coverage-7.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:7132bed4bd7b836200c591410ae7d97bf7ae8be6fc87d160b2bd881df929e7bf"}, + {file = "coverage-7.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a698e363641b98843c517817db75373c83254781426e94ada3197cabbc2c919c"}, + {file = "coverage-7.13.5-cp312-cp312-win32.whl", hash = "sha256:bdba0a6b8812e8c7df002d908a9a2ea3c36e92611b5708633c50869e6d922fdf"}, + {file = "coverage-7.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:d2c87e0c473a10bffe991502eac389220533024c8082ec1ce849f4218dded810"}, + {file = "coverage-7.13.5-cp312-cp312-win_arm64.whl", hash = "sha256:bf69236a9a81bdca3bff53796237aab096cdbf8d78a66ad61e992d9dac7eb2de"}, + {file = "coverage-7.13.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ec4af212df513e399cf11610cc27063f1586419e814755ab362e50a85ea69c1"}, + {file = "coverage-7.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:941617e518602e2d64942c88ec8499f7fbd49d3f6c4327d3a71d43a1973032f3"}, + {file = "coverage-7.13.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:da305e9937617ee95c2e39d8ff9f040e0487cbf1ac174f777ed5eddd7a7c1f26"}, + {file = "coverage-7.13.5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:78e696e1cc714e57e8b25760b33a8b1026b7048d270140d25dafe1b0a1ee05a3"}, + {file = "coverage-7.13.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:02ca0eed225b2ff301c474aeeeae27d26e2537942aa0f87491d3e147e784a82b"}, + {file = "coverage-7.13.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:04690832cbea4e4663d9149e05dba142546ca05cb1848816760e7f58285c970a"}, + {file = "coverage-7.13.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0590e44dd2745c696a778f7bab6aa95256de2cbc8b8cff4f7db8ff09813d6969"}, + {file = "coverage-7.13.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d7cfad2d6d81dd298ab6b89fe72c3b7b05ec7544bdda3b707ddaecff8d25c161"}, + {file = "coverage-7.13.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e092b9499de38ae0fbfbc603a74660eb6ff3e869e507b50d85a13b6db9863e15"}, + {file = "coverage-7.13.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:48c39bc4a04d983a54a705a6389512883d4a3b9862991b3617d547940e9f52b1"}, + {file = "coverage-7.13.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2d3807015f138ffea1ed9afeeb8624fd781703f2858b62a8dd8da5a0994c57b6"}, + {file = "coverage-7.13.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee2aa19e03161671ec964004fb74b2257805d9710bf14a5c704558b9d8dbaf17"}, + {file = "coverage-7.13.5-cp313-cp313-win32.whl", hash = "sha256:ce1998c0483007608c8382f4ff50164bfc5bd07a2246dd272aa4043b75e61e85"}, + {file = "coverage-7.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:631efb83f01569670a5e866ceb80fe483e7c159fac6f167e6571522636104a0b"}, + {file = "coverage-7.13.5-cp313-cp313-win_arm64.whl", hash = "sha256:f4cd16206ad171cbc2470dbea9103cf9a7607d5fe8c242fdf1edf36174020664"}, + {file = "coverage-7.13.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0428cbef5783ad91fe240f673cc1f76b25e74bbfe1a13115e4aa30d3f538162d"}, + {file = "coverage-7.13.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e0b216a19534b2427cc201a26c25da4a48633f29a487c61258643e89d28200c0"}, + {file = "coverage-7.13.5-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:972a9cd27894afe4bc2b1480107054e062df08e671df7c2f18c205e805ccd806"}, + {file = "coverage-7.13.5-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4b59148601efcd2bac8c4dbf1f0ad6391693ccf7a74b8205781751637076aee3"}, + {file = "coverage-7.13.5-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:505d7083c8b0c87a8fa8c07370c285847c1f77739b22e299ad75a6af6c32c5c9"}, + {file = "coverage-7.13.5-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:60365289c3741e4db327e7baff2a4aaacf22f788e80fa4683393891b70a89fbd"}, + {file = "coverage-7.13.5-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1b88c69c8ef5d4b6fe7dea66d6636056a0f6a7527c440e890cf9259011f5e606"}, + {file = "coverage-7.13.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5b13955d31d1633cf9376908089b7cebe7d15ddad7aeaabcbe969a595a97e95e"}, + {file = "coverage-7.13.5-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f70c9ab2595c56f81a89620e22899eea8b212a4041bd728ac6f4a28bf5d3ddd0"}, + {file = "coverage-7.13.5-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:084b84a8c63e8d6fc7e3931b316a9bcafca1458d753c539db82d31ed20091a87"}, + {file = "coverage-7.13.5-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ad14385487393e386e2ea988b09d62dd42c397662ac2dabc3832d71253eee479"}, + {file = "coverage-7.13.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7f2c47b36fe7709a6e83bfadf4eefb90bd25fbe4014d715224c4316f808e59a2"}, + {file = "coverage-7.13.5-cp313-cp313t-win32.whl", hash = "sha256:67e9bc5449801fad0e5dff329499fb090ba4c5800b86805c80617b4e29809b2a"}, + {file = "coverage-7.13.5-cp313-cp313t-win_amd64.whl", hash = "sha256:da86cdcf10d2519e10cabb8ac2de03da1bcb6e4853790b7fbd48523332e3a819"}, + {file = "coverage-7.13.5-cp313-cp313t-win_arm64.whl", hash = "sha256:0ecf12ecb326fe2c339d93fc131816f3a7367d223db37817208905c89bded911"}, + {file = "coverage-7.13.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fbabfaceaeb587e16f7008f7795cd80d20ec548dc7f94fbb0d4ec2e038ce563f"}, + {file = "coverage-7.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9bb2a28101a443669a423b665939381084412b81c3f8c0fcfbac57f4e30b5b8e"}, + {file = "coverage-7.13.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bd3a2fbc1c6cccb3c5106140d87cc6a8715110373ef42b63cf5aea29df8c217a"}, + {file = "coverage-7.13.5-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6c36ddb64ed9d7e496028d1d00dfec3e428e0aabf4006583bb1839958d280510"}, + {file = "coverage-7.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:380e8e9084d8eb38db3a9176a1a4f3c0082c3806fa0dc882d1d87abc3c789247"}, + {file = "coverage-7.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e808af52a0513762df4d945ea164a24b37f2f518cbe97e03deaa0ee66139b4d6"}, + {file = "coverage-7.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e301d30dd7e95ae068671d746ba8c34e945a82682e62918e41b2679acd2051a0"}, + {file = "coverage-7.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:800bc829053c80d240a687ceeb927a94fd108bbdc68dfbe505d0d75ab578a882"}, + {file = "coverage-7.13.5-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:0b67af5492adb31940ee418a5a655c28e48165da5afab8c7fa6fd72a142f8740"}, + {file = "coverage-7.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c9136ff29c3a91e25b1d1552b5308e53a1e0653a23e53b6366d7c2dcbbaf8a16"}, + {file = "coverage-7.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:cff784eef7f0b8f6cb28804fbddcfa99f89efe4cc35fb5627e3ac58f91ed3ac0"}, + {file = "coverage-7.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:68a4953be99b17ac3c23b6efbc8a38330d99680c9458927491d18700ef23ded0"}, + {file = "coverage-7.13.5-cp314-cp314-win32.whl", hash = "sha256:35a31f2b1578185fbe6aa2e74cea1b1d0bbf4c552774247d9160d29b80ed56cc"}, + {file = "coverage-7.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:2aa055ae1857258f9e0045be26a6d62bdb47a72448b62d7b55f4820f361a2633"}, + {file = "coverage-7.13.5-cp314-cp314-win_arm64.whl", hash = "sha256:1b11eef33edeae9d142f9b4358edb76273b3bfd30bc3df9a4f95d0e49caf94e8"}, + {file = "coverage-7.13.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:10a0c37f0b646eaff7cce1874c31d1f1ccb297688d4c747291f4f4c70741cc8b"}, + {file = "coverage-7.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b5db73ba3c41c7008037fa731ad5459fc3944cb7452fc0aa9f822ad3533c583c"}, + {file = "coverage-7.13.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:750db93a81e3e5a9831b534be7b1229df848b2e125a604fe6651e48aa070e5f9"}, + {file = "coverage-7.13.5-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9ddb4f4a5479f2539644be484da179b653273bca1a323947d48ab107b3ed1f29"}, + {file = "coverage-7.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8a7a2049c14f413163e2bdabd37e41179b1d1ccb10ffc6ccc4b7a718429c607"}, + {file = "coverage-7.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1c85e0b6c05c592ea6d8768a66a254bfb3874b53774b12d4c89c481eb78cb90"}, + {file = "coverage-7.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:777c4d1eff1b67876139d24288aaf1817f6c03d6bae9c5cc8d27b83bcfe38fe3"}, + {file = "coverage-7.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6697e29b93707167687543480a40f0db8f356e86d9f67ddf2e37e2dfd91a9dab"}, + {file = "coverage-7.13.5-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:8fdf453a942c3e4d99bd80088141c4c6960bb232c409d9c3558e2dbaa3998562"}, + {file = "coverage-7.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:32ca0c0114c9834a43f045a87dcebd69d108d8ffb666957ea65aa132f50332e2"}, + {file = "coverage-7.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:8769751c10f339021e2638cd354e13adeac54004d1941119b2c96fe5276d45ea"}, + {file = "coverage-7.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cec2d83125531bd153175354055cdb7a09987af08a9430bd173c937c6d0fba2a"}, + {file = "coverage-7.13.5-cp314-cp314t-win32.whl", hash = "sha256:0cd9ed7a8b181775459296e402ca4fb27db1279740a24e93b3b41942ebe4b215"}, + {file = "coverage-7.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:301e3b7dfefecaca37c9f1aa6f0049b7d4ab8dd933742b607765d757aca77d43"}, + {file = "coverage-7.13.5-cp314-cp314t-win_arm64.whl", hash = "sha256:9dacc2ad679b292709e0f5fc1ac74a6d4d5562e424058962c7bb0c658ad25e45"}, + {file = "coverage-7.13.5-py3-none-any.whl", hash = "sha256:34b02417cf070e173989b3db962f7ed56d2f644307b2cf9d5a0f258e13084a61"}, + {file = "coverage-7.13.5.tar.gz", hash = "sha256:c81f6515c4c40141f83f502b07bbfa5c240ba25bbe73da7b33f1e5b6120ff179"}, ] [package.extras] @@ -313,14 +329,14 @@ pyflakes = ">=3.4.0,<3.5.0" [[package]] name = "flask" -version = "3.1.2" +version = "3.1.3" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c"}, - {file = "flask-3.1.2.tar.gz", hash = "sha256:bf656c15c80190ed628ad08cdfd3aaa35beb087855e2f494910aa3774cc4fd87"}, + {file = "flask-3.1.3-py3-none-any.whl", hash = "sha256:f4bcbefc124291925f1a26446da31a5178f9483862233b23c0c96a20701f670c"}, + {file = "flask-3.1.3.tar.gz", hash = "sha256:0ef0e52b8a9cd932855379197dd8f94047b359ca0a78695144304cb45f87c9eb"}, ] [package.dependencies] @@ -337,14 +353,14 @@ dotenv = ["python-dotenv"] [[package]] name = "gunicorn" -version = "25.0.3" +version = "25.1.0" description = "WSGI HTTP Server for UNIX" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "gunicorn-25.0.3-py3-none-any.whl", hash = "sha256:aca364c096c81ca11acd4cede0aaeea91ba76ca74e2c0d7f879154db9d890f35"}, - {file = "gunicorn-25.0.3.tar.gz", hash = "sha256:b53a7fff1a07b825b962af320554de44ae77a26abfa373711ff3f83d57d3506d"}, + {file = "gunicorn-25.1.0-py3-none-any.whl", hash = "sha256:d0b1236ccf27f72cfe14bce7caadf467186f19e865094ca84221424e839b8b8b"}, + {file = "gunicorn-25.1.0.tar.gz", hash = "sha256:1426611d959fa77e7de89f8c0f32eed6aa03ee735f98c01efba3e281b1c47616"}, ] [package.dependencies] @@ -569,6 +585,21 @@ files = [ dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] +[[package]] +name = "prometheus-client" +version = "0.23.1" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99"}, + {file = "prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce"}, +] + +[package.extras] +twisted = ["twisted"] + [[package]] name = "pycodestyle" version = "2.14.0" @@ -692,14 +723,14 @@ zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "werkzeug" -version = "3.1.5" +version = "3.1.6" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "werkzeug-3.1.5-py3-none-any.whl", hash = "sha256:5111e36e91086ece91f93268bb39b4a35c1e6f1feac762c9c822ded0a4e322dc"}, - {file = "werkzeug-3.1.5.tar.gz", hash = "sha256:6a548b0e88955dd07ccb25539d7d0cc97417ee9e179677d22c7041c8f078ce67"}, + {file = "werkzeug-3.1.6-py3-none-any.whl", hash = "sha256:7ddf3357bb9564e407607f988f683d72038551200c704012bb9a4c523d42f131"}, + {file = "werkzeug-3.1.6.tar.gz", hash = "sha256:210c6bede5a420a913956b4791a7f4d6843a43b6fcee4dfa08a65e93007d0d25"}, ] [package.dependencies] @@ -710,5 +741,5 @@ watchdog = ["watchdog (>=2.3)"] [metadata] lock-version = "2.1" -python-versions = ">=3.13" -content-hash = "5bcb333e951818ca4706d50bae307ab22a95462b6e393691b1a6d0992e4ffc41" +python-versions = ">=3.14" +content-hash = "978605bae0c54f50d967c46bf36e71be1c8baa8f5deab0c54397546aaa573a3a" diff --git a/app_python/pyproject.toml b/app_python/pyproject.toml index 1e8b7fba15..deb962795e 100644 --- a/app_python/pyproject.toml +++ b/app_python/pyproject.toml @@ -1,20 +1,18 @@ -[tool.poetry] +[project] name = "devops-info-service" -version = "0.1.0" +version = "1.8.0" description = "" -authors = ["LocalT0aster"] +authors = [ + {name = "LocalT0aster",email = "90502400+LocalT0aster@users.noreply.github.com"} +] readme = "README.md" -packages = [{ include = "src" }] - -[tool.poetry.dependencies] -python = ">=3.13" -flask = ">=3.1.2,<4.0.0" -requests = ">=2.32.5,<3.0.0" -gunicorn = "^25.0.3" - -[build-system] -requires = ["poetry-core>=2.0.0,<3.0.0"] -build-backend = "poetry.core.masonry.api" +requires-python = ">=3.14" +dependencies = [ + "flask (>=3.1.3,<4.0.0)", + "requests (>=2.32.5,<3.0.0)", + "gunicorn (>=25.1.0,<26.0.0)", + "prometheus-client (==0.23.1)" +] [dependency-groups] dev = [ @@ -23,3 +21,10 @@ dev = [ "flake8 (>=7.3.0,<8.0.0)", "pep8-naming (>=0.15.1,<0.16.0)" ] + +[tool.poetry] +packages = [{ include = "src" }] + +[build-system] +requires = ["poetry-core>=2.0.0,<3.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/app_python/src/metrics.py b/app_python/src/metrics.py new file mode 100644 index 0000000000..1441b3f8f1 --- /dev/null +++ b/app_python/src/metrics.py @@ -0,0 +1,119 @@ +"""Prometheus metrics and Flask request instrumentation.""" + +from time import perf_counter + +from flask import Response, g, request +from prometheus_client import ( + CONTENT_TYPE_LATEST, + CollectorRegistry, + Counter, + Gauge, + Histogram, + generate_latest, +) + +try: + from .flask_instance import app +except ImportError: # pragma: no cover - allows `python src/main.py` + from flask_instance import app + +METRICS_REGISTRY = CollectorRegistry() + +HTTP_REQUESTS_TOTAL = Counter( + "http_requests_total", + "Total HTTP requests handled by the service.", + ["method", "endpoint", "status_code"], + registry=METRICS_REGISTRY, +) +HTTP_REQUEST_DURATION_SECONDS = Histogram( + "http_request_duration_seconds", + "HTTP request duration in seconds.", + ["method", "endpoint", "status_code"], + registry=METRICS_REGISTRY, +) +HTTP_REQUESTS_IN_PROGRESS = Gauge( + "http_requests_in_progress", + "HTTP requests currently being processed.", + ["method", "endpoint"], + registry=METRICS_REGISTRY, +) +DEVOPS_INFO_ENDPOINT_CALLS_TOTAL = Counter( + "devops_info_endpoint_calls_total", + "Total calls to application endpoints.", + ["endpoint"], + registry=METRICS_REGISTRY, +) +DEVOPS_INFO_SYSTEM_INFO_DURATION_SECONDS = Histogram( + "devops_info_system_info_duration_seconds", + "Time spent collecting system information.", + registry=METRICS_REGISTRY, +) + + +def normalize_endpoint_label() -> str: + """Return a low-cardinality endpoint label for the current request.""" + rule = getattr(request, "url_rule", None) + if rule is not None: + return rule.rule + return "unmatched" + + +def record_endpoint_call(endpoint: str) -> None: + """Increment the app-specific endpoint usage counter.""" + DEVOPS_INFO_ENDPOINT_CALLS_TOTAL.labels(endpoint=endpoint).inc() + + +def generate_metrics_response() -> Response: + """Return the current Prometheus exposition payload.""" + return Response( + generate_latest(METRICS_REGISTRY), + content_type=CONTENT_TYPE_LATEST, + ) + + +@app.before_request +def start_http_request_metrics() -> None: + """Capture request start time and increase the in-flight gauge.""" + endpoint = normalize_endpoint_label() + g.metrics_method = request.method + g.metrics_endpoint = endpoint + g.metrics_start_time = perf_counter() + g.metrics_in_progress = True + HTTP_REQUESTS_IN_PROGRESS.labels( + method=request.method, + endpoint=endpoint, + ).inc() + + +@app.after_request +def record_http_request_metrics(response: Response) -> Response: + """Persist request counter and latency observations.""" + method = getattr(g, "metrics_method", request.method) + endpoint = getattr(g, "metrics_endpoint", normalize_endpoint_label()) + start_time = getattr(g, "metrics_start_time", None) + if start_time is None: + return response + + labels = { + "method": method, + "endpoint": endpoint, + "status_code": str(response.status_code), + } + HTTP_REQUESTS_TOTAL.labels(**labels).inc() + HTTP_REQUEST_DURATION_SECONDS.labels(**labels).observe( + perf_counter() - start_time + ) + return response + + +@app.teardown_request +def finish_http_request_metrics(error: BaseException | None) -> None: # noqa: ARG001 + """Decrease the in-flight gauge after the request finishes.""" + if not getattr(g, "metrics_in_progress", False): + return + + HTTP_REQUESTS_IN_PROGRESS.labels( + method=g.metrics_method, + endpoint=g.metrics_endpoint, + ).dec() + g.metrics_in_progress = False diff --git a/app_python/src/router.py b/app_python/src/router.py index b2590de495..294be6246d 100644 --- a/app_python/src/router.py +++ b/app_python/src/router.py @@ -12,10 +12,20 @@ try: from .flask_instance import START_TIME, app, logger + from .metrics import ( + DEVOPS_INFO_SYSTEM_INFO_DURATION_SECONDS, + generate_metrics_response, + record_endpoint_call, + ) except ImportError: # pragma: no cover - allows `python src/main.py` from flask_instance import START_TIME, app, logger + from metrics import ( + DEVOPS_INFO_SYSTEM_INFO_DURATION_SECONDS, + generate_metrics_response, + record_endpoint_call, + ) -__version__ = "1.7.0" +__version__ = "1.8.0" def get_service_info() -> dict[str, str]: @@ -28,6 +38,7 @@ def get_service_info() -> dict[str, str]: } +@DEVOPS_INFO_SYSTEM_INFO_DURATION_SECONDS.time() def get_platform_info() -> dict[str, str | int]: """Collect system information.""" @@ -120,6 +131,7 @@ def list_routes() -> list[dict[str, str]]: @app.route("/") def index(): """Service information.""" + record_endpoint_call("/") return jsonify( { "service": get_service_info(), @@ -134,6 +146,7 @@ def index(): @app.route("/health") def health(): """Health check.""" + record_endpoint_call("/health") return jsonify( { "status": "healthy", @@ -143,6 +156,13 @@ def health(): ) +@app.route("/metrics") +def metrics(): + """Prometheus metrics.""" + record_endpoint_call("/metrics") + return generate_metrics_response() + + @app.errorhandler(404) def not_found(error): # noqa: ARG001 """Return a JSON 404 payload.""" diff --git a/app_python/tests/test_endpoints.py b/app_python/tests/test_endpoints.py index d0aca40338..97c217b476 100644 --- a/app_python/tests/test_endpoints.py +++ b/app_python/tests/test_endpoints.py @@ -62,6 +62,7 @@ def test_index_returns_expected_json_structure_and_types(client): route_index = {(endpoint["method"], endpoint["path"]) for endpoint in endpoints} assert ("GET", "/") in route_index assert ("GET", "/health") in route_index + assert ("GET", "/metrics") in route_index def test_health_returns_expected_json_structure_and_types(client): diff --git a/app_python/tests/test_metrics.py b/app_python/tests/test_metrics.py new file mode 100644 index 0000000000..ac7da3ad0b --- /dev/null +++ b/app_python/tests/test_metrics.py @@ -0,0 +1,106 @@ +"""Tests for Prometheus metrics exposure and labels.""" + +from collections.abc import Mapping + +from prometheus_client.parser import text_string_to_metric_families + +import src.router as router + + +def _raise_runtime_error() -> None: + raise RuntimeError("simulated failure") + + +def _metric_value( + metrics_text: str, + sample_name: str, + labels: Mapping[str, str] | None = None, +) -> float | None: + expected_labels = labels or {} + + for family in text_string_to_metric_families(metrics_text): + for sample in family.samples: + if sample.name != sample_name: + continue + if all( + sample.labels.get(key) == value + for key, value in expected_labels.items() + ): + return float(sample.value) + return None + + +def _metrics_text(client) -> str: + response = client.get("/metrics") + assert response.status_code == 200 + return response.get_data(as_text=True) + + +def test_metrics_endpoint_exposes_http_and_application_metrics(client): + """Metrics endpoint should expose HTTP RED data and app-specific metrics.""" + client.get("/") + client.get("/health") + client.get("/does-not-exist") + + response = client.get("/metrics") + metrics_text = response.get_data(as_text=True) + + assert response.status_code == 200 + assert response.content_type.startswith("text/plain") + + root_total = _metric_value( + metrics_text, + "http_requests_total", + {"method": "GET", "endpoint": "/", "status_code": "200"}, + ) + health_total = _metric_value( + metrics_text, + "http_requests_total", + {"method": "GET", "endpoint": "/health", "status_code": "200"}, + ) + unmatched_total = _metric_value( + metrics_text, + "http_requests_total", + {"method": "GET", "endpoint": "unmatched", "status_code": "404"}, + ) + root_duration_count = _metric_value( + metrics_text, + "http_request_duration_seconds_count", + {"method": "GET", "endpoint": "/", "status_code": "200"}, + ) + root_in_progress = _metric_value( + metrics_text, + "http_requests_in_progress", + {"method": "GET", "endpoint": "/"}, + ) + endpoint_calls = _metric_value( + metrics_text, + "devops_info_endpoint_calls_total", + {"endpoint": "/"}, + ) + system_info_count = _metric_value( + metrics_text, + "devops_info_system_info_duration_seconds_count", + ) + + assert root_total is not None and root_total >= 1.0 + assert health_total is not None and health_total >= 1.0 + assert unmatched_total is not None and unmatched_total >= 1.0 + assert root_duration_count is not None and root_duration_count >= 1.0 + assert root_in_progress == 0.0 + assert endpoint_calls is not None and endpoint_calls >= 1.0 + assert system_info_count is not None and system_info_count >= 1.0 + + +def test_metrics_count_internal_server_errors_with_status_labels(client, monkeypatch): + """Failed requests should still be counted with a 500 status code label.""" + labels = {"method": "GET", "endpoint": "/", "status_code": "500"} + before = _metric_value(_metrics_text(client), "http_requests_total", labels) or 0.0 + + monkeypatch.setattr(router, "get_platform_info", _raise_runtime_error) + + response = client.get("/") + after = _metric_value(_metrics_text(client), "http_requests_total", labels) + + assert response.status_code == 500 + assert after == before + 1.0 From a5f8d2fb11eb01b855761acd6caa5ad14c39dbf2 Mon Sep 17 00:00:00 2001 From: LocalT0aster <90502400+LocalT0aster@users.noreply.github.com> Date: Fri, 20 Mar 2026 03:26:44 +0300 Subject: [PATCH 3/5] task2 --- monitoring/docker-compose.yml | 28 ++- monitoring/docs/LAB08.md | 170 +++++++++++++++++++ monitoring/docs/img/lab08_task2_targets.png | Bin 0 -> 131121 bytes monitoring/docs/img/lab08_task2_up_query.png | Bin 0 -> 21487 bytes monitoring/prometheus/prometheus.yml | 27 +++ 5 files changed, 220 insertions(+), 5 deletions(-) create mode 100644 monitoring/docs/LAB08.md create mode 100644 monitoring/docs/img/lab08_task2_targets.png create mode 100644 monitoring/docs/img/lab08_task2_up_query.png create mode 100644 monitoring/prometheus/prometheus.yml diff --git a/monitoring/docker-compose.yml b/monitoring/docker-compose.yml index ac36c52b2e..60d0eaa366 100644 --- a/monitoring/docker-compose.yml +++ b/monitoring/docker-compose.yml @@ -90,12 +90,29 @@ services: - monitoring restart: unless-stopped + prometheus: + image: prom/prometheus:v3.9.0 + command: + - --config.file=/etc/prometheus/prometheus.yml + ports: + - "9090:9090" + volumes: + - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + - prometheus-data:/prometheus + deploy: + resources: + limits: + cpus: "1.0" + memory: 1G + reservations: + cpus: "0.25" + memory: 256M + networks: + - monitoring + restart: unless-stopped + app-python: - image: localt0aster/devops-app-py:1.7.9a42ee5 - # Re-enable local builds if Docker networking breaks behind the tun/VPN setup. - # build: - # context: ../app_python - # network: host + image: localt0aster/devops-app-py:1.8.806c77e environment: HOST: "0.0.0.0" PORT: "8000" @@ -182,6 +199,7 @@ volumes: loki-data: promtail-data: grafana-data: + prometheus-data: networks: monitoring: diff --git a/monitoring/docs/LAB08.md b/monitoring/docs/LAB08.md new file mode 100644 index 0000000000..ff44e6b3e3 --- /dev/null +++ b/monitoring/docs/LAB08.md @@ -0,0 +1,170 @@ +# LAB08 - Metrics and Monitoring (Task 2) + +## 1. Overview + +Prometheus was added to the existing Lab 7 monitoring stack in [docker-compose.yml](/home/t0ast/Repos/DevOps-Core-S26/monitoring/docker-compose.yml) and configured in [prometheus/prometheus.yml](/home/t0ast/Repos/DevOps-Core-S26/monitoring/prometheus/prometheus.yml). + +Key decisions: + +- `prom/prometheus:v3.9.0` is exposed on `localhost:9090` +- metrics are stored in the `prometheus-data` named volume +- Prometheus scrapes every `15s` +- the Python app image was updated to `localt0aster/devops-app-py:1.8.806c77e` so the stack uses the branch build that already contains the Lab 8 `/metrics` endpoint +- scrape jobs cover `prometheus`, `app-python`, `loki`, and `grafana` + +## 2. Commands Used + +```bash +PS1="$ " +cd monitoring +docker compose up -d +docker compose ps | tee /tmp/lab08_task2_compose_ps.txt +curl -fSs http://127.0.0.1:9090/api/v1/targets \ + | jq '{status, data: {activeTargets: [.data.activeTargets[] | {labels, scrapeUrl, lastError, health}]}}' \ + | tee /tmp/lab08_task2_targets.json +curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query \ + | jq '{status, data: {resultType: .data.resultType, result: .data.result}}' \ + | tee /tmp/lab08_task2_up.json +``` + +## 3. Evidence + +Screenshots captured: + +![](img/lab08_task2_targets.png) +![](img/lab08_task2_up_query.png) + +
+docker compose ps output + +```text +$ docker compose ps | tee /tmp/lab08_task2_compose_ps.txt +NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +monitoring-app-go-1 localt0aster/devops-app-go:1.7.9a42ee5 "/devops-info-servic…" app-go 23 minutes ago Up 23 minutes 0.0.0.0:8001->8001/tcp, [::]:8001->8001/tcp +monitoring-app-go-healthcheck-1 curlimages/curl:8.18.0 "/entrypoint.sh sh -…" app-go-healthcheck 23 minutes ago Up 23 minutes (healthy) +monitoring-app-python-1 localt0aster/devops-app-py:1.8.806c77e "sh -c 'gunicorn --c…" app-python 23 minutes ago Up 23 minutes (healthy) 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp +monitoring-grafana-1 grafana/grafana:12.3.1 "/run.sh" grafana 23 minutes ago Up 23 minutes (healthy) 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp +monitoring-loki-1 grafana/loki:3.0.0 "/usr/bin/loki -conf…" loki 23 minutes ago Up 23 minutes (healthy) 0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp +monitoring-prometheus-1 prom/prometheus:v3.9.0 "/bin/prometheus --c…" prometheus 23 minutes ago Up 23 minutes 0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp +monitoring-promtail-1 grafana/promtail:3.0.0 "/usr/bin/promtail -…" promtail 23 minutes ago Up 23 minutes 0.0.0.0:9080->9080/tcp, [::]:9080->9080/tcp +``` + +
+ +
+/api/v1/targets output + +```json +$ curl -fSs http://127.0.0.1:9090/api/v1/targets | jq '{status, data: {activeTargets: [.data.activeTargets[] | {labels, scrapeUrl, lastError, health}]}}' | tee /tmp/lab08_task2_targets.json +{ + "status": "success", + "data": { + "activeTargets": [ + { + "labels": { + "instance": "app-python:8000", + "job": "app" + }, + "scrapeUrl": "http://app-python:8000/metrics", + "lastError": "", + "health": "up" + }, + { + "labels": { + "instance": "grafana:3000", + "job": "grafana" + }, + "scrapeUrl": "http://grafana:3000/metrics", + "lastError": "", + "health": "up" + }, + { + "labels": { + "instance": "loki:3100", + "job": "loki" + }, + "scrapeUrl": "http://loki:3100/metrics", + "lastError": "", + "health": "up" + }, + { + "labels": { + "instance": "localhost:9090", + "job": "prometheus" + }, + "scrapeUrl": "http://localhost:9090/metrics", + "lastError": "", + "health": "up" + } + ] + } +} +``` + +
+ +
+query=up output + +```json +$ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq '{status, data: {resultType: .data.resultType, result: .data.result}}' | tee /tmp/lab08_task2_up.json +{ + "status": "success", + "data": { + "resultType": "vector", + "result": [ + { + "metric": { + "__name__": "up", + "instance": "grafana:3000", + "job": "grafana" + }, + "value": [ + 1773963907.906, + "1" + ] + }, + { + "metric": { + "__name__": "up", + "instance": "localhost:9090", + "job": "prometheus" + }, + "value": [ + 1773963907.906, + "1" + ] + }, + { + "metric": { + "__name__": "up", + "instance": "app-python:8000", + "job": "app" + }, + "value": [ + 1773963907.906, + "1" + ] + }, + { + "metric": { + "__name__": "up", + "instance": "loki:3100", + "job": "loki" + }, + "value": [ + 1773963907.906, + "1" + ] + } + ] + } +} +``` + +
+ +## 4. Notes + +- Grafana reported `DOWN` on the very first Prometheus scrape because the container was still starting; it flipped to `UP` on the next 15-second scrape without any config change. +- The stack is currently running locally, so `http://localhost:9090/targets` and `http://localhost:9090/graph?g0.expr=up` can be opened directly for manual inspection. diff --git a/monitoring/docs/img/lab08_task2_targets.png b/monitoring/docs/img/lab08_task2_targets.png new file mode 100644 index 0000000000000000000000000000000000000000..be3c369b91c07a55df1f793a587d708d81fced23 GIT binary patch literal 131121 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

P(v4kl>RlQ;I^dsC|JV)95X{fAP=Ki4L+>(!60 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 OkeH{dpUXO@geCy}=QsEO literal 0 HcmV?d00001 diff --git a/monitoring/docs/img/lab08_task2_up_query.png b/monitoring/docs/img/lab08_task2_up_query.png new file mode 100644 index 0000000000000000000000000000000000000000..dc281d37b659fcc4647100d9b1efa2b61d1f5d80 GIT binary patch literal 21487 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

V9P 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 literal 0 HcmV?d00001 diff --git a/monitoring/prometheus/prometheus.yml b/monitoring/prometheus/prometheus.yml new file mode 100644 index 0000000000..405abc0fdf --- /dev/null +++ b/monitoring/prometheus/prometheus.yml @@ -0,0 +1,27 @@ +global: + scrape_interval: 15s + evaluation_interval: 15s + +scrape_configs: + - job_name: prometheus + static_configs: + - targets: + - localhost:9090 + + - job_name: app + metrics_path: /metrics + static_configs: + - targets: + - app-python:8000 + + - job_name: loki + metrics_path: /metrics + static_configs: + - targets: + - loki:3100 + + - job_name: grafana + metrics_path: /metrics + static_configs: + - targets: + - grafana:3000 From 6580e7a429db80082b664c77609bdf2f8a0d7933 Mon Sep 17 00:00:00 2001 From: LocalT0aster <90502400+LocalT0aster@users.noreply.github.com> Date: Fri, 20 Mar 2026 03:44:55 +0300 Subject: [PATCH 4/5] task 3 --- monitoring/docs/LAB08.md | 103 ++- .../docs/img/lab08_task3_custom_dashboard.png | Bin 0 -> 231683 bytes monitoring/grafana/dashbboard.json | 620 ++++++++++++++++++ 3 files changed, 722 insertions(+), 1 deletion(-) create mode 100644 monitoring/docs/img/lab08_task3_custom_dashboard.png create mode 100644 monitoring/grafana/dashbboard.json diff --git a/monitoring/docs/LAB08.md b/monitoring/docs/LAB08.md index ff44e6b3e3..28ac983d68 100644 --- a/monitoring/docs/LAB08.md +++ b/monitoring/docs/LAB08.md @@ -1,4 +1,4 @@ -# LAB08 - Metrics and Monitoring (Task 2) +# LAB08 - Metrics and Monitoring (Tasks 2-3) ## 1. Overview @@ -168,3 +168,104 @@ $ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq - Grafana reported `DOWN` on the very first Prometheus scrape because the container was still starting; it flipped to `UP` on the next 15-second scrape without any config change. - The stack is currently running locally, so `http://localhost:9090/targets` and `http://localhost:9090/graph?g0.expr=up` can be opened directly for manual inspection. + +## 5. Task 3 Overview + +A custom Grafana dashboard was created and exported to `monitoring/docs/dashbboard.json`. + +During documentation review, the exported dashboard JSON was corrected in two places so it matches the actual app metrics from Task 1: + +- `status` was changed to `status_code` in the status distribution and error-rate queries +- the `Request Duration p95` panel type was changed from `heatmap` to `timeseries` + +## 6. Dashboard Panels + +- `Status Code Distribution` (`piechart`): `sum by (status_code) (rate(http_requests_total[5m]))` +- `Uptime` (`stat`): `up{job="app"}` +- `Active Requests` (`timeseries`): `http_requests_in_progress` +- `Error Rate` (`timeseries`): `sum(rate(http_requests_total{status_code=~"5.."}[5m]))` +- `Request Rate` (`timeseries`): `sum(rate(http_requests_total[5m])) by (endpoint)` +- `Request Duration p95` (`timeseries`): `histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))` +- `Request Duration Heatmap` (`heatmap`): `rate(http_request_duration_seconds_bucket[5m])` + +## 7. Task 3 Commands Used + +```bash +PS1="$ " +cd monitoring +curl -fSsG --data-urlencode 'query=http_requests_total' http://127.0.0.1:9090/api/v1/query \ + | jq '{status, data: {resultType: .data.resultType, resultCount: (.data.result | length), result: .data.result[0:4]}}' \ + | tee /tmp/lab08_task3_requests_total.json +curl -fSsG --data-urlencode 'query=http_requests_total{method="GET"}' http://127.0.0.1:9090/api/v1/query \ + | jq '{status, data: {resultType: .data.resultType, resultCount: (.data.result | length), result: .data.result[0:4]}}' \ + | tee /tmp/lab08_task3_requests_get.json +curl -fSsG --data-urlencode 'query=devops_info_endpoint_calls_total' http://127.0.0.1:9090/api/v1/query \ + | jq '{status, data: {resultType: .data.resultType, resultCount: (.data.result | length), result: .data.result[0:4]}}' \ + | tee /tmp/lab08_task3_endpoint_calls.json +jq '{title, panels: [.panels[] | {title, type, expr: .targets[0].expr}]}' monitoring/docs/dashbboard.json \ + | tee /tmp/lab08_task3_dashboard_summary.json +``` + +## 8. Task 3 Evidence + +Exported dashboard JSON: + +- `monitoring/docs/dashbboard.json` + +Custom dashboard screenshot: + +![](img/lab08_task3_custom_dashboard.png) + +

+dashboard export summary output + +```json +$ jq '{title, panels: [.panels[] | {title, type, expr: .targets[0].expr}]}' monitoring/docs/dashbboard.json | tee /tmp/lab08_task3_dashboard_summary.json +{ + "title": "Custom", + "panels": [ + { + "title": "Status Code Distribution", + "type": "piechart", + "expr": "sum by (status_code) (rate(http_requests_total[5m]))" + }, + { + "title": "Uptime", + "type": "stat", + "expr": "up{job=\"app\"}" + }, + { + "title": "Active Requests", + "type": "timeseries", + "expr": "http_requests_in_progress" + }, + { + "title": "Error Rate", + "type": "timeseries", + "expr": "sum(rate(http_requests_total{status_code=~\"5..\"}[5m]))" + }, + { + "title": "Request Rate", + "type": "timeseries", + "expr": "sum(rate(http_requests_total[5m])) by (endpoint)" + }, + { + "title": "Request Duration p95", + "type": "timeseries", + "expr": "histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))" + }, + { + "title": "Request Duration Heatmap", + "type": "heatmap", + "expr": "rate(http_request_duration_seconds_bucket[5m])" + } + ] +} +``` + +
+ +## 9. Task 3 Notes + +- The exported filename is kept as `dashbboard.json` because that is the currently staged artifact. +- The error-rate query currently returns no samples for the present scrape window, which is expected while the app is healthy and no `5xx` responses are being generated. diff --git a/monitoring/docs/img/lab08_task3_custom_dashboard.png b/monitoring/docs/img/lab08_task3_custom_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..a018051d9922e31cb5a2825e02c1574d586d2b7b GIT binary patch literal 231683 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%0DndaZr%G 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�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 z zj%9SnRO3VMrNfJjG{?h!15Ts9$DHI4mD+gsP(EgmR1T+){qCry zuNJPUAnrDRD=X9n=i8}#v!zJnd{Q=LQ?wG%;hlWuUxgf-#B)Tl=-4-4@CG zUQz^ijHL)lT2xzSVKl_dE~3w4EOOid3$CZoWI|GMJCqU~b4j4hey2-1YE-c0Nf`@w zxgvVbVQq8EPxz_jL%>D7+K|- zdCM{c^%w75bFxjrJzO9^*@U^#RIhgO;z6cX%wapTy<&lAkZ`0%7D$Iu)-pNyXzS3L zr!8pFu0j9^Tic8s(JTyFQd-yo6%yqvQLjPN+FcTMTwzK<0P#19S?{a5CTNWI(E^M0%%RVV%_SbHM?JAVnWY$4j{vKv+ki#@S zzeAkw7sR`q#c88Zt$8F!&pP!J*eE~VXWw3s)qFO$5=a5Nnn zgOQSjQd2cTD2~q^?*jR%qb{k87g!6RseG;>Em7!nQU!L``M=&oYHHb2-iBiQR)w5%u2$bW^QtWZNGzy-ZPsC4k0`YyuL(RaXPsP z9E|JrMCR@-Y2Q8T(2w$k=vV6cA1j;P?qKQmCPzLLo(h*WOG18(?nl;c)h}aC*-~;h zoJLe`{$!P)o^EWhekQ)V{CFZgW< zksN2#$;aI$%A{&3b;w498$S8fQPszqom@BJZAl{;ElO7J-5@cV>V$TX{8g*bB+>gk z)mmmzTh@ZM$}~8iStX3)DNi^VdWDuDX=FyQh@<%19SKf2^8WpCSSUd@Bk9ghHN@;O zY0(CvFq{0w?5lC<@!Grxhh-gM%Iw6x?P4O-{d$$DJTan&3QMiw;;#3$u8+8pJxW@fR;XOZq=YD?uMLYHI&zcnrqOS#o zk}aOI0*x=~!pDpFg4j^vxV>YwqE|g3Wrer5O0%->dRevM&q$67Cpv+cj^DF01k@Gl zzbKmU?_3816L_$@6V{LrCrVXs#aKO0@w`}V+5)x2a=7aG2NO(SGNCnLphJ52H!3%* zLLWElT?{N(u}kFWTto0b*4lpXXf;_~O!OM0>mOCf8Oq*tpIu6+zWZll z)|5x3x>OJe*Nmm@I!FTir)3f))grMFLumEb7g-nIqy*Z+lOoEZsU3%6itKw8l9du# zVWmsXMyTXtJNXhpv{=}Zb5X0viRP9Fo;6RfeqS!Ns<#Wf0THn%#F!g&84E815r33pYv6b1TL41hhQ5w%5p# zXKL!las8VN{1<}bXNrieBPcOAC|5pL8q51DwS$v^XWRN{eK>?>b;IvRIg|%jcbct? z=!6LoHI&t=gc>Hk{WvR)BT@MsjIIPK;NM|U8$$)RMIM*TeoSqTmq7Wy{%p+p3N zfr8!j9-oqIeygLe*OW(Wm`NB32ZNp zEgE9APZIXuyPF_%pv2QZ%|vWRfWN|2_d2MXss6C(Yiplfd$I0OpBPZ8QUyavf)xlN;{l)Mu&6(5p7bHZ4j9|$bOC9W_*sxpy;c@Yf z&GF^B8~U5kT8YtwzNMnsgCi5xY}IXqAonsk_o8co1v!1MyJ0?YS}(9XV{0obgZM$!iavDI~tuN1=7@``aW%)4+!;t^Aexc}-F8;Tf=_Ssv(j za2Ma)>j}P)7`Ml)M=m_HV>^Dxq=S{zlb2~Grz^@17b&B?A2rUOh-_AEetLW_1uA7T z%?|s-{8@Z>*VhB6hUBe4e~K`5;*ZS^z6x7miv~!E$F$0aC%y9-m<)Ctom zb67fcd3D-a2q`Nq3PA(1ghS&ZJmR?fyQH`!mblMdHSdP*Eccq4JyJxH*bn%ucwt;&$#(%~2% zGd@dd^@;!>=dY!q^pmodqf-PtT2NG!^kD22ld1M`IgQDqPn1^kZ`@!8p+qR%^?h1> zu@EsEeVuosCCev$kv+SZ#?%wGJ{E$r?7kVScE>EXZ}!u!KOTt~l=h>%fdQd-Y$lK% zX1aB@JZrwuMh57|{Y$&sTiQNoqNhrytuXmqFekTDrxUN#W}B9!cF*|h=kdcw5(Az3 zLU*%Hkf1;>CX(kA`mj--xJbTGd0@quf)nz6A5p|B=4EB(N&(r@)C!rtY z*q$3~kqpP#Z;cFR21RNP%OemK6UNe`E@NUg)92rPa9E#7rx?C&c z5!k*w-VWCH;p^*!lblM(M=HHgmRA!qHg*Tn;=Vazc#T-N=~rnJRCg|*+F#q3zAEwQ zaq7M7n;i^&(Y9#;5i^f#c0R{ACFCN5I_0Ps=oWd!)!573W@l52yr+=I8;npLohlPi zck_I`={Wq&HyN;2Oc`mz^Cw>@Q2l!5Q*VHw6Q7-6a&|WH9`hB*PI-Fb^f`aFr`Yf+ z06W#P%Sg}kNpK0`lS~XIW@i7X7l}T;A?DzK3@k{v_g8q~;G18|%gnp8QfJ0_VEcb; zxbvR1FK=GGUtM?0ooTM6+r^Jo%@C~^z3SaDHf&d;V)0NhgVG2l%^(nqXh_~Am6L?C zQcm);Q}iFYo&7pq1Uamgh>bZN@U zsO8?R9ikBT6h`1+erbhOD6xZ%da!noABNGy#J^Ot8pk^!`wRGP)5d-Wp3VW5$ls3P zuWGf1Xn^Z#>z3@+{@`p=<84`bfkKPX70S#oR|c-d*?FO2Eh;=w!Z8U>OziHI2h@aw z7*J#P{>>I2jIp6iH#F$XE7f_1Lf6-?b)b^Ven}j~9bZk9=MDb)9-3z@N@^C*XuKb# zDYPjdBt-N!wSVc0yF0npOjzsIqBAiOZ7RDt@b|uaOi{dC%{M%I{k6`hZ`s?loG+m7 zKqNqajz(*1R7%Yn}TZIz%#9F%u#bCOYvVNWqR5dIlr&=;9w&oEcQ~T(Pn5C zPc);8ZDbiq6;46JGk7bwEKdc=O8s(3+UGjVs9Bpc(ca2Snu?1&Xrc2yrTaw#MX(5R z&L&uFj_T!mb-KU5{8^5)o3rmekeZaqlzen4%j&z!XZZ;t^s{ds*m)w@kjs$415aVF z#IQ~%?$v?A2{a&oV!(NUs$4SEZfc7E?PF^DTeIV#J}zeif@?uE*ISO~g*)$a-)tE6 z+gAn$K#cmWy7K|u<&vrRfb4KE)xOt$_kayhSi=BL<-t&(bAI`D-s;Ckk7k?s_nnhF zC%0<;EH}k9HSH?F$iJc~7nO>?Rj>dd56a_(7$9A8^rByH^)XQ0tnX78GJ8m;r)CrKXxrpR;S zb{8JV>olB{Z^fNs73YS2AE2@?G zoBjPtwvWB`YZ!@qQKX7RoKi`P_LtD4b1D7ukP~={b?KP$&an~?h>)Tb#*Vm4Qs*(`ycvRAO5a#}AnfUk2unhu81 zQH~69NPw6*lA5IXMKUS*hl8HBdaHkm-~7?L1eW`uYMi5F1&ou45DI5(?1ti5-y^RtQ-W zU&2KrZuY4O$q%x78|)GVut&9LT5^YibGr=O+}*Fa4k0SVBbiNzw@y!E+h1LHN}+gP z#~g=*(Rnx_BT$Jdu_Nx>AJ5fX4x5D1ie_F2H+${puXBU=x3Vyl!6J0KTHv>}XZ&2# z3y{ywYbj*ASk0xkXe7%}*fi)f!FKk?U8eoc_UEuPE5B>WbKrA#EQ0O9%3T=KR=)V~ zJl29>IVgnc)<&e+5IDBQf{a9ggV!pmtYJ;WDCmVs$pRR({Bt=Cs3Ojwx3|fdYCaW` z=+U~<5gl3ra)vmNau98OE}wx!cW>ec-0K+%Dgl;X?S64Q(tps5P){NXYg2sR}q zC4~i|#rw8|2yV=vNY7AfLRSpG>X%OomNA|bgF%GuY_#(nFway)bzqFYetQe77%|sT zMSu5*t5qvgsbDbNIjYsSdl}mdi;C*IA~G6#wWwX2@t06!0+Y40gf{hJ#RMIN{Fi(7r*5VEZ;f!pg|7`mss2MOQqbi^74I%RuC z7uN-&Tvns6QEUV9Z>)>m23B18(~I3?T1cW0*3utuJX>%P7gs`s{78rU+ir@UID=>= zuPKl8g7m-RKOJh5%|J`I{WXiuasx7&y? zk!Dy6jY~jpQ%saNEpHoGze>Q7O{=-gTks4TcoF7v zZo@z730*T970G=MT@hA(>lFOY{sN5UJ-M!lDq0?JkNREe*8 zw$a~#V=o&a4+_*^;c3;1(4JlKm@g!*7i$9zSST7zp_z0f0-0Tkgnx3wAV*t>B-I0P z<6{n@2UwbP-Q1|;%%jOX!U=z06wsIp`|Z#_067- z@UY4>(U^Jtxt|_FN1def>=Zz834gzLrqY{zFsTqWl5}}$4pAT`jdjb zIGOi-aQ>4|R5 zHRIJ1IXJg1g`BR_0G$Bpqh~cC)rb)pE(x%SXpr2`K?+nn&v zS6xE5>EKeTbpq5%dMo77x4OCst|uGIf%*dqi7%;czzgT3$0}cFRqJrijE?I2(UJ}< z4itfBTPO(z4OH6~&I8HZxN zb`)#(c+vUv@Je@eeZBwAioW+oDD*OsFZ_(w0GjM1Y}-^L-mOhK<0E`BTYrlXyN`EbpgQzF%^yU$z)m zU_Qhoyt5ow5V9LdX7v>QwojA1l^%@g{4<@^CvcXM4_4r#Au>x2U>WvMg;2w5?Gu^! zX08Q%CF+YWue_Ykrxz}m!T@g5@&D!&E$ z><{3eqDF1xQ+?v=MQBW-)>&}RO9J4l;5d&4p>T@5W6r#55s_F?+!0u2+hKC8>MrFG z<52cJ)Z;C00-hNW0KF1EwY|lKAtC9xsJ)P=-s1F1#0?tgpyEusi2e_FZ^i)ygcMRv zFRAy#!`Eq6!H73)X_Tw5QYfXJi8?%Pf;j|Iie;av|V5Pu1sG!TaFmBl3-KO2X2!GjWcHT8(&MKFsbpgvo!C|`;vv8i?dds*}MES-?1KZro+4vCM z+kN*%MYYskZ#S9(&2nwQoe;o~u?K=(Z7~te6mlzgQBoQ<-1O2SI$1jo=#~qglKqIu zCi2E>Wqes5WcsGZzGR%I2CYPbvF?8&Awm|qSJeq_`wO*jID=@hZ;*MU4 zL@Kj>}Q<u9$oh#0-^R5iB`FgUkh#{EcZvp1J4~Z7fPib?Bx+S` z^(vjdlKK)7{*6@OF=Mk!{>UiW&~8N%#adyq4s>+-^xi|uYQ7oTla(S2b{qEM7!*j* zhrF=(0I8z=ulm6w7SxsKdiD>>7FZE-)O5-bG!Y>7$>^g=(vjB5r#(|6U>R#=4Y-XY z!0jf2`R6ev*PA^XgvgECGlNJB{{K_hTR>I0t?l26f*{h}3gQB!ySuwPq+7a6K)R*7 zT{O}S(%s$Nor~uGu#fva`@HdeW2~hE#~P^2`OLWP-*w$Af1cI!c@Xki2ICX@(Ie&o zL}T^Hymejr!2#SH4CGtYj#nK>dkiALNtjpRVoFTy+Eel$Qb@F@n$(11#@f+Pj+cd% zzMJBA#-G{Oc~HU4l*^u`bv>Y+QpaX+MO`wxtsd-L2Rg5>Myz+!uCI$7z~XQiy}d=+ z2?xNU7}(F=XrKuFxzM1k+Z@np-l2%tX0VcMlPgs`<|Pp+V>b@&SkZ{;;AJEq2{H;w z5ZgJou;hV~ldU4tNYStm3!UP*P%(wBU&?{x zZCM#5rT3w_{Z8uZ!)RWdzw~p+qVh-IlV}8Vw6{k?pkZM2E_%cg7_4B1(zpiO&Z9v? zyb~)+nnyd_B;BhCQPD0-JpU<~uRrKzbBR|uJ>KJlUR!fATY5Shr}N6Du*Dq(#8Bc; zn>1$h{V1y-rq-a>}jp+39lr+m(P2%=;Cb%>Ls$&yxy63n3SRtHT}k@sYMwYkq1 z*uT~Z;2uk5f-?KDQSuh1<5?&M~zcZx?d_W-eZC+$av z&J9AJuWzr{BGy|@qn9RN2<9uDQ_Io23OH0i&7Y>hUBP?uWp)~p}{X)vThjR{W!R;HOwO&tz@(N18U4y}> z8&=nx(_zE9&yn4RAa$w$$gnQ`-vnbfNZZ=5GBGRbYxphd*5}e5B%4P4@NAO482meV{XA_;YYRk;kvRt|$8^_THQN6vE zC!0{7amb6H&T$WcAp{YiH|S)V@v55w<9IcJ#%M-sq4Ta6&3e2J(!52)`?8zJ6(0{) ziN9tGUn}u~+h0Y8=c$t+TV}K9be{#Pld`yV<)YCW%W5Q_%hZ}5n(dm4(oZ|VP$4ViwE76yjpXm&xu>iObS3n+sFrsv(5T!2i=T`3I~JSOH8nv&LEa>S zs4qSTMnh?4+TXy?v%s}@P58>k(ZmFsxIeDF?M7!MBv&VM@a}L{O}9;X{z{f2HZUSW zpeF6mdTk>8U?4*@n0is8J<{+Co!eU2baJL=lQ1@C5e>|{y&!OUi9hg9UKv^SP_4K4 z;K_AcF-y+hc-eD!w*G&8u$X{jqQ`k(n%+i z4iP+ze)XR98Zg&V9lh==WqCfS4?fOfsM(Yx-F_1W|8 zflRsB}nBD$sXLvA{*~9P_;8VZ?#93Z`eoh#q{eVFY<{4A+ zfYtV{6>w9-NQu6LG>!0X#{plspV+$b%5{26w$xqCEIGYd$7^ZwO_L?Ea=^xK3JjG9 z_ww@7H3p4F4iO0$md{Rncb^OzlPwq4*v@rzj4g%p=FN~6tG?riX3HZ|vwFjVCfF!U z9Ux+0bk4tL-%*xZxTJ8TD|BsQ4V^x899ve#`}VZZAhTwN$G?3<cY?G?%< z!fYDikdY2Dc86OHb}#?3 zK`_TJx-nw|i)KL^wN*O!0TOASOcfA@oWwI;#$3D%Lu5silRwTX6(MN$pqZ5YI0{uB z5s|J$p#R$MwWnvZsC0EIW)Nnfh&$^`K$h0)#Zqv z$JKBfseQcf=kxTsy&#`(ZvJ#+5F(k*0b$wKMlNNx@NvLXPIka&wov!|n(Ah!7((TF zbBX+Qfsx%-6lpyloVEpFEcpm@L6cCc@g&u@I{Q?h=n3VpH__hOe#d5sQs%fQ&gj;^ zBl`j1yO2TB>NLuDl=wU%5jf+rogE7-$LHtg3=w#vdAexsBjzt!z@iC%OS;-IEPN;& zMB(@*j}{U4nmX*MFHwWgH~W=%B?q_yOji#U;q8ZR_zFj}Bokq;Z*TRFn->wypoY26 z@yjFqs5HXt#37iblOqndNAtx8LwI4S>{?-#^EI}!t0Zqm8r38`OBG!+zNV^-6dP-B zI|cLK+8iS}*M0TStaTpRP0?<0oh_hb*?65BnBa2GvpGC;#Ng%S1sGn{2}qczFuY&# z-7o!5nfE-K9XSYwP1@j=xc7ax4z5lPHo9mWMaCc|L>aq0@@piYWu#5&GUH2Sjq)g$ zyEPpxe}UvsN*qK(m^n)@8J{bWDNxQWghB>KuUi)op|;=}%aB#6QN}cDkZ#r+ zL?4kj^$O?4+YqSCp}+>yx6u**y@|rU#fZ!533uK;RHjUjgimC#(l#zLP+){^k`WzH zTWR*8e=(f;#)I{YYEI5a+lzo8{gwwkPp|zcDT|qF4BRQN$ph?OqzO=e z9;$C^UaBr7L)t48R8;>=Uy*V&|4808>6dPKRG24KxCp>;y9I318#2+Z7boCc4{<_hM2~ ztARnx#T?cfJ^3x+`n%;q%%!9v5Pr`Du48@s{V}}4IIG`b$_ZhVV(gJ3A?- zAj#cf{K4e-c$VdeIN1Ug;`i^rrMl@*4%T_*qLPOb-X$*c^rR$ZC|WCkyn>50SXN70 zWKOt^A!_2{Z}|lzR0#scj!8irGEp@qrDj4lXQCte>+DF2A#v=Z<> zhlI;5e;S_sV;g*Im+Veu7TpDK&az0_T0~;n|%IytyA5Y|TL8!{fjB^zGQFM#jfi zbCCFA$kBSq{Uo1n0mc>C96N9>5}-a`-m7^h&yY!TTlp(h{`|@vQ%?!}%ZOT!J4`Tg za9G&tuu{4!rql6~ck369MWys5xyIidhI^{oCro_m2-77xn>{!_#BX!T?`e{@->5h0 zG}?2AH1hxr8b~GLn7w|wP^p!FL`7SF&Y%C6EPMj#SIfw(lvr%oVx@t_?dKD?Q$4Ks zj`@qjaid_x)gnaHdUWk8R^p&{(a>YdGN!H0qpXD1+w%Q9AF!)V2r zR(IIeE@8v|*;X*}h3oW@r3E`Lp@B4d^cnFI)3iwOmG=%>~+%JVpjtmussrEZSO8wFA!m*dwdVzF}; zAn8IXdaNY|()CjTAE;O#G;0br_*@SKYZ|Usna{Li*Bf-74VWC0n7oa`w$|6=X>cLk zW!J2VKUizX4|BWx6baJc9G9du)kkq^?qwH_n|yM}B4VvW|D4)^nk2u_lQ)-(L=(uWcFA+a{9_9RNyU!2^LOfDG$z>Tusei zADq{noL>s;D<78Kb*DP2Ll^L<_>RLT%1d#<#(XMJ=>A%?nklZ7X}+B%oBLDmupZ-H zk&~@hQ|!`yqvz#7VpU*-)9IKC06639RWbqvXE^m##0qY;Z?E2Xb?{7=WJzqNDI7ZnbNVNfZ8j&$E z9X^LYAJxJ?tnO%w%BYZJNxl|w8gT}F?8tOEkDF<5Vp(#pfDQ>k+jyteY(cO^lhWIE z2=po(VGI1u=5}P&V`y9HT1r)Ic?UCDF!_5&4(*h0c?fY^idyAY_F7Y%MP{Po0zk9$0oKI(-xbU`~ zto6gv>1>_kCq2Do#>3JRrOSZ?a`xdvd7Aleg~M>nrlZJ_VZQ-Fav&4HN(#S_zo5q- ze8=k=hYlenq+MkD8)T9WeMoE-o#+P&V5euNA_dCpBmQG%hoVSADcZUfsaYNIaJmbn zgJP|LqrGJk7(L{_zM9957=mkmNR&tFMiNVdSLzM25hEK6(25m^<%}zBrowq;V^G3T z{+z-9@hR`ug!8XAT#FBra~KKS4$KDfq_0h*@*i4NQVU=6LwZ`$tx@g0N7EUIX2m9oZE*wb_>L_JS~w zG(_2^?=Ld!!!-&&V_ zb`eoQ1pM${Bea;OY4i^G9I%f!+iyh{L$SHj#!-uxYm=&2B@=*l}nZF7c+VcTPM9lAFG#Vr|o;wEt0*?d@qI zOWJT@>OTZg$$Bv3A94$}GZ zn2{?TpqEV!kqV5e5nCQ4w+#i?FXgiqT?tUpFi{&iXH*h{pt@uVy0wab^gHH5%^1Eu}i=GUePMY;fbX*`$&E z&O)ChCfoMFExtq?l{JL{6&d#1JLekLQi3I~;W_WzQIiz*ss$Wzf@+s`$I7qM3#kFE z)IzJrYP!D(x=c-02;7U`3R%ivcn+WFcXt}5Vu`Ee)MjHA z7%csesx*cx1S-H5jt1Yed?6m;xWEqwuGpczzilA&$CIA2h1kX0aD8uk+b=1S5aCWu z)3OrN7?Xp-wzKcDp|A}BoAuyPaogE^DJdGJEAVZ$lXcO!;}sZ#Ck*AUbH|fyk><_f z>bun`KneW&&cqQztpo#PY}(*~VONijBh05ug3Z_HD9VhiqnG zGTJNc*H*oze3UY<>xaD;jSqB(B*`PRhRv3+Di#3$75I-W4a%E9)J|{j0`4mlchjA{ zW8vfDH2T%4a^d7XYHb&wQ-};7d6e1D^1rEi4fRs)3knH4dD^8YItqz2iSYd>*Fjn! zP{=C(&!uQ**@+gDMr$R*Ump-z4}Xpld){o);vsB1s&ThXqx95E!d-e*h zd;I1{HT)>Vm#^q^#m&BhqotyJ?9mG>l)DNJ+ zxIff1=B9R?5sq{!d+R0!g<_lWc}tI7V;YgYAn>D-t&x7>z&7sG+I-GBB zJN}e;*VAK*jn9ON@mX=rTz55#&AsGmE}K!Ed#U*Zf;8aZ2<82rg&YRwBJvk4yH$n3 zh>=)S6sg}QjXM&O&mj;woJq0%s@wvxcj_q%rI~OA5CBIuX+N2YCY;3YZXG1qjN&mJ7E$TMFsRoU){|xYK=-vOnm73a%zgkRe$NtpDB3UtR>5w zh2IsL)MFYe>O7B%8U*fK2ejj^&3-H(zme$O4$Er>?!>lDfOT#o>WW-d4p?4fW zzaSbRIE6bULs5nTNfUMhOv7L|Nv5Sw$EsK)7Z(=+dusUbshmQc9tKc)>CY8<5P=&M z^7k)!6*idyPiskPpSGQLTuPNJ<&fZStp`L{ z1cdh3LKRx`D@E-CuxL1-w*}W;vrc&A6VlvLKb$dm7NmDfliPl|=_B2l$^1<7=mmMe z^hCkcPMF$ILk2|0AJvxQaKOnqe))L51y83~!_<+U)hC7Pr;v?8a#~uNiEInq?SBKC zLu@q8y3DOs0f_J9j!5K&LCAfi%?;3;6!Xbz?I4KFk47XMY>%9$97hXvVLd%>IhA!Y zR|CVEh7GGT&NKbA*7ce^z%izpEdM(ZoyqVQ5naZjTsmR?z1aiiRN->jV#yCO&%Cbx z1{y|ptNWY{)rVNiXgF0@dRZ`v9)Pj*wnzLzwohlX*lL}4lKQpH$Iw&R?fq(MXqY{k zrnX$>+cz?3n?oO{vD97yfeV`#%AZ8q9_}EKNd^3q;50f8VOWjz{A}~qHP?~7O65xn ztvBI$PvQcAT?E71n~(M1FmyXOt*B4BIvAtyJvB8|5Uqy)K<*GzyhYv zEc$C3qxgmbawreCh; zUHf0m^aU3Ht+VuO+B$w^G{0q@D%LR!r&q7Km5}xm3P%wSA&nLr9F?4Rv=H)zDP7Bb zY6=AqdJ9Oy#@J>EEF5APJBv4OWIRwwhyN5Cr|k`n>HQil9x|rKh9*>#D*hRJ(MLaZ zuD0R2{fz{rDa5vJYeuvlts{zId_a3$yp zOY{LG>R$pr#P4jug~VC@?%!%_RXaeDtMbH zPow&)UI0qj?*3&XuOuRpu{2?>eDC&ru`vh0VTYvRWOuz=g+2~i2iwh+0r2zOs;UcF zEdJpamm!+w6IAoMkE9^IwQJJ@=h;TXS2T@YtQPM8S4kSdtHXJR&Kx)f+Ap#)iUq3B z54VE4_c?O4o(~iNQxv`uDSJ-WYctif|3-P62oKK}5F1YJ1OkvwunGS~i}TM8tCR*s zgCe$rN;1l7@SomvPC0x*s(%c4hZ~gl!2_AV1B>Va_ZuLeBLyHH_cQndQO8^87TMhh z0>w#HbhaJN_D6HL581B2*7X-UP*PxmQ#8V{xh>u`FJB>C9nH5(gTz6?h{76?`nqG+ zI0plG9IFD3#G$x!FPm=dg=J+U7hSSp^WoNi>h@2CUF$*|CyLMCLeAGZ&)qd`gORoB zYlQRV4QUplI{%It zPOj%;!E8u#5v{)#z%|dN?u}2PQmQ>P{_}I=+%GtQFtVKbH1o?8q2A$WFyvu$)QQ&m z*QF0tR6@dU4e=&}F+@7chld9?)IY%U8MSt__RCl`0EO3lxNdT79_%lh_d&JZFYBE0Mp}IlKDO zTGSvu){M&4*PGJu)Ybbtys&HIZAzqz?d><;?_N(X=69c_5k0=c|w z?{Zj9+?VSZ0$d77JoD|(Q}dssG+~^luFinlUj++xEc80wC_!y)ZTJ6EXa^`8pChWV zf=tnLr{%APPD>^S6T4;>^UbmS0MqwvYf$~nEqBb9fOOHddeaU}mO})2{Eecwfo;PK z9y&TiC2eCPHd?xuxnbD%zP?sl4CoRig}c8O1$CsSM#hbJU|}P791~QDKpxSQ(%LpZ zV;xSRz%Hcf<9HS^*z)ZU!XE;pOG=wqtk4{$u*r>9G^w|`xn?NOf07~_$eDp?Zh$=s zxR0FQ5Gmae%YoX1?5zN^sVIHVOcY-asag*$_C7G}dSR^xKQU=_{i#vIcK3LNvQv3I z$x-#yD(Ea0w*Y=ynt#5Jm}_2hsVzZ#y`3|aEjv29D}I*=CY>7?^Yb@Oepl!t2}b-N z%F6a(o?MqQWb1+pNkCK-+aHmzHyoND3XaAeZR1-Rx}765ss>m{Pr@XMStwQoo|u$0 zsGsum@^sT)`IAW$q+M4(>c@|sQKC=b4_6^K4}dUTrn|0UqWYv%q5qM`z!0Y>OZ*+C zSQq&Vzaj7EDJ82xxnjW zt#qa~l1%o^AMZ{k5R3!NV87?P`|lGO+ZIR(KIJ;0v33)5hEMFzy(hxf7aPSliyDBFj0TI%jQ?JhC9kX-ZnLLq}ut@$eVpif~DMAs$g&V*A9nc{hYn4q~f-(eaT7Db0g@f zc*mfCL%#G7s=k^5p@_I=CiE`QD9g@X{A&upn0G!Tm`KN?qoSHggD>qTjjivl200zb z5l~|ZSWQCdpLtQx-La8~IkJbV$SKruOuoKL>-1|=CLkDQ(wz`p?tSd0*C;0sD{kRE z?@;j%Qi)`q@y0kxHPoP>(-geIS3N3*f&>a+y!RIZqO&nA^CNO z;lC6XO*Wbfg^TPpIIzIES$!Q2RR%32s5*qeXSyId-8I@c>bzAAk3`eCThxQX2eqTs zP*b-1!X=W8l*|twt|Xee=PGqsJ$A9#Bji$lhgA?bV|Fe!IDMhrvAJ8;Fj+bvD7;ky z$n@hHoXcSR(Pk~IBCVFOuN|-+;D&WbeNgR83c3%}9XiB@eQPzqt17?eN3V^D)k4=U z0}3cN5NX{hMjk5fU7~F7Ms1;tAODsghbe$&!WL+su)dzuK%@7{Kja&C+-x;z1*}6{ zh~h2hX4%tn)a9HsACq?$$~ZWXMP=&&Z=sAL@G`>L62sD>|dFo4l7QC-? zVu7z}xd7%SW==6*euxQ5QpS0y@*&%R25oe=?~qIsfde06Zr;mwRr4JFn_!d00xlZl z`RrReCO|CkXxJ=SF)7-~ceYiJB5B7F3CCYSH;JhZB8FqHK7Q+mmut~Xl zRP+%aKx{LrNMMz2nG0l3mVe>c^a9yNd|)%{Y2`zVxjJN5OOkQ%}uE4vI}R`IYD{Ft=R6d`-*Kia$F!9Dl# z?!dnUHBLgoj=(>sB>>@%!N0kAk>>IfSJ}NReB2~z>IGF+606hWI~w^CtqSN~v7qbg zaq^UsAo;D4@gTiIoayfMb@>Q(&Xv{64&`8_bPLJk~^~bjynER#fug9q!y9Sc# zBFC3x?OVH~x?*@@wEN_f+mu9ST&*Xp-OCIRc&J+3J5e?JF@sCAn_xoN6>vX{DX7(& zFuOu_hE3r`S-yYYhEoqb0`SNdoeJCNn;G+F^`Tp&eidrr^rcs22BQ?=*cmnpWeg%j zBrH<6Ev=?8gfJrd4#1i*TC~eC^XrPk{{JSe9lzb54`WcORU-qQ%sG{2R7TFDULJ}IpFOzW{{(UT+JJXNJ$e8c)zh|3kxJ)91;PAGKxppo}E;$gksehuDWl%PEV zjYc! z;Y514Md;eYNM?2Y&S)%&IQ%EXMOvio?9P`_ms-32H@gtJrLbvfk6QVkV#IXj`NMT| zFZMq}TvWqKJwD!ZeME*mQ0SKMn`cK-RQgFmDi99Z5EjuR&+noc6#MpL<@JU(3yjEC?~A(3cIq9SO@F)lK>XpN|QlL4oP;nB?vo&xf z+jN~^!j@?3zp3L2ioJKoY8<~9al;hAaU242Cdn)oBKwYmi!Rs)sJNKwISQqm)C;;P zY05uW{io0}>8aK(-hLOY5~U+sA)ORRraCH)H2ARi-nT`uKRogWJ;Kp$EI?EDKuNqO zAqQw`%O(&--(+p^dF3qPQE*CQCr%AjQBgT;E@EUMYTc< zJ_&l64c$1rAqMWkbg!IxrZtNcoY)!J(^}< zR(9dnN50mf=r0_!3j%9G5`w~qNOrDvu|A zEW5e6k(m9q1{P-mX$(HS?=fDtEh{z`HDn7l;muCAfM$W{n=NenXo&hvtJWl3X)()s zS)M%9LwYq=W&`<|6^uS6HZwWt>-)JZDJ;!ym@*5w@?x15=C_w0nGSC7BV@xv~Ugl2i=9SM-u@U zcf&+P%b{KOlN|oAes-(m!-a2li-m1aLZJsTm+cj4yR`|sK@@~t&GG%Qm=dKgr*EVV z+nGTQ&(`LHxT*GBM{4v;8#Gv3z+Og#+GolMgrm5Z-P>L4Orn@M;KE$s=~07);?K8- zGZf+>Z0Y+mbU>dx{5Hclz2Hi#y%@Eb`%9o=G4__{a6ZgN|7Qa9DnPXT4vOv`J$v}M z6)%Q-WFz+!D{L~c!xT!$@vhw;vJL(MAl%IHe;{eqiYp23Cp7Tmvk*N{{jnNLZHg?< z*hlcgojbDM9mMYJ1zPx=OA0FolFIhfkENzt5}{bVs)!U)*QOz}uf{`3aotyP^0L!( zd~Ee1p@bGk67fft1BQTZudCa)r^XhJD z781U>@Z*&gkYjSaeobe;KO0AoxZW+r#Bq_bND~2XyiMoOC#l(Tid1iJ6*3E;;s75L z7#O%wet%IzJ3zI1p#BNO2MA%7_x_NsOEH{pN|7xo@uU{0})=s@Oes z>x`vXlL7m|<>jToaoU4gPF$De6d3+gpt`mUE@`@Sin=CgTBF8Fbm--~Nb_I7IB*#k zc-FVe$Tk2q)v!#+_3RhGcQnpO!817>E$NmuFgoDEcP;+Gx8po>lna$pm-{i^Qfjjk zwcNWV>_7f;MOk!Z}KNo8JeRTE3q`bznq4{#IUbQ?GDO5?-^c5$^e)3 z$590=)?u!-wY909jM#p4xb5bsfp#E3%gofR#qyZW;t|&62M8g?yyb**PZJ1@TksGhO@VHZzV$f0S~1KcU;pWs^3Gi!&Q?$Tg}A=UXbS)F+NvklV!KE=iWV_ z5g%0k^;buZDvaMjzC8GsvX*Zz)Qw+n&tWJQebIykmIwIu1=R2o!!sZjfWOL38D)br}rcIVj6+8T2#tB+%*}x;1wp;JACFeh0DS^8j%aYN$3x|79XY zhQ*ibR)F@(Cse{P3qQ*UL>zm{doLkks`jbnnWv>MI4>d|G?Tb{RWX)2=PddzFIRCE zz#&IxSfI60U+uYqiA769fO`DC7w2JA_}e~7&r!EIk>}V1=Qbuhifs0h%I6>(L5kvl zkM!l7U?KXbxVT^rr$-^cBbvf?$MVc%Q)h$k`eMjK@Mgom0Y^0Ec)5x1h8rD)VcG)r zKx`ujbZV^bo(ukhHT2|z#Q@Y7!>BY^xTc`-Y%PGZ-_-q0TW1CEEUtjjN_CzBbUv9) z<#o!;?%CHr)i|;6D#e=O|0Y6~d)fIqM)7r!CFwooBBfK+#B6Ta80B;>V+#t(1nIq~ z?PnaY)Vz{PHWl4CGChof@fe1dK$*Qp#n_3y!n`1mm?6xEskq>h)&Oy(wjOo~>R+Y3 z_hJ}GbsMgOEI`g}mmn$IvD-F49G?ef06)&zwQR6V3Z+Vr*)Bo%z{__{$E~~aR2p3> z8(p14833U%{s3{Zo5RGONlS8Z8O@rg$y;wq-AT4WlE2+!#Mz+@Y1pGfVzpHVNd;%; z^$^-`9hjKTP{HR>SiwyT&RZF2Xk=Q>E%c1@g|FP3Y` zrqXC$FI?$a9F7`hSAV~&AC|ee)a;SWY}IRH0S}J=9--E?zt`#BaIqXS_bWGabx3@Z z0NL=`n%UZ(_9r}o1ilMru+-xInTT9gA)j2uK!MeCVcUQYuFDPqDLRj6g@6j)AmB^t zcT48r<>tmz>82_?CUt6Esvg(W*@3C!$aNmLZ_2;AR$b2Q)Xcs;oYL|rA8l6Njehy! z#fuAT(Lzi`@{rQ=4rm!=&9e()uVIaie7Fz?Urs~3GUh;J)MyLj!7HbXzOF!v$I-(4@(#m}qhaX3-zR{5P1fcBRO*+sE}hx;cZ4t;%0w?YkYSfA|oG2_!WrQN3kO0CQ($m^1o zHB!`&%ogW{QQo9fSuK12>>SL>?YA&DQS8i=Mg94ZHdQ1Q--=W`hY#kS+;Yo{u^iZ; zyU=R=!0uXe9`A2U${LSv-0~9KRlH#>(?EUVCc9&>XBDuR`f210xRcOp|FicVe@&>lC+~0*J8# zPjOeAQn9vZX!EI(9}NmyL)yGzz2k+8v#RL}Y7tchkIWkR?n-+$mg5=~ zyiIeGu;?D=kk+StayNF-l(&#jx!rv4!l|mv#dS4(&E?IvRON}J;DW@f|2-&*z25P# zAjRG6=H^Tcd>G8t1DP4;th_NAfF<;%ZSgLk9~c88%)}ju{(%bEuK!1 z!KE47-m57o5g#chEDO5xtqPU}axDb->qjC#jKxWUa{@f0#|M|C@-H5R#x{yf^lc3>EiQ)&3UJNJ5mh z_CZZqrH0BwI3~@&fD?=9?Abx^nay7E9)ygV`e%n)8TwdV$U8FIy6xjZyIabpi*kQz z4UX9Q0c{rtX6VUEFy^#q|!;Bh+~X&v2I?n+;B zGcLARACbUs_A6cTU?UCk#5}dD3qHR?tN!&~v-*CaeLT7+CkVx9QlBs|w3Y_&n$O3^ z$ItVB*JK63zkKuhH9LRJ2^~DVr7n0tG5+F=zr};-Km@Ox!C}0=Xz6R%ErI1MW*VE6 z3?kmq#cWiRT%~D+<$JZq*X<1pGqkqUT)1#*MowmYW@ZXm2`{BQsC))@xnUnjW4b% zZ{7zj%4WPFG))2Sd;#rzKJMq2`GAXG=kz|AQ#Z3(W2M*AOZr+`OEY4E``Z^<_3mQT zJVXrPt`|FE67e*jtd22leU=+t>}G#z2{KelsHn%(f6vNt{ZSf0bLp|8%a+OIu;(^A z6cYJKTIR>~OykH-p0U0`WV_^iwHJjA5W2nua^jQ3=JBikT0!-3$cZIqK!eN|8;`|M zg8e4qO<*B)^P{WTTd6Q288`<0&Et_(D}xLQ<8>HdKzn!G@_<8}dJ;NESJYBiGIt!b z(Xyroln+qY&iXx%coUW7Bpm4Qwkb}C#~C-23j#iL$+2CO2kUk%>5 z)SUeEAqg;iZ!6avOHQzH^mmfiePX$x2sSS_9yM<2_DnyUAzuzaZ zY$HuBMRS5OyM#Qdv=h_C@1Dx0%bW|AYzA^5TxJ^8>YR~SOH4j-)GZA#@bM2j%gwyp z#qK+WzB*%lm4>L>OV9ImG23Fyl^uxtWD^K<%GvGY|B1FB9|i7txm=3`&Y(}wDc*&S9Rx?4hbCtMkB ze}Bi=NInk7ui(o>qKRv+%jc6$m7P*Nj!a`$=O_7yqo&P<)48|DCF-lTVcx()m^DLw zik?m@mZp(EIJX-sVL9IK6lAfKATb<4K<+`k3?0X4Uh=)Y!TyHW(4fd>mT)h+VXtiT z&vRG!b2{&Nn3yQ$=Pr6(?{Epg+@}O(emr~2F5k})Uwr#XMN9TePDj@Qb0eC4BNlff z8hF+F4}6Y2M{61pvMep@LzD{~48TyYe cd81Ex;0Ww&9pw+upZ{1)NLsLj|BKK60}4%R2mk;8 literal 0 HcmV?d00001 diff --git a/monitoring/grafana/dashbboard.json b/monitoring/grafana/dashbboard.json new file mode 100644 index 0000000000..8300187931 --- /dev/null +++ b/monitoring/grafana/dashbboard.json @@ -0,0 +1,620 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 0, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [] + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 0, + "y": 0 + }, + "id": 6, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "sort": "desc", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "editorMode": "code", + "expr": "sum by (status_code) (rate(http_requests_total[5m]))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Status Code Distribution", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 6, + "y": 0 + }, + "id": 7, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "editorMode": "code", + "expr": "up{job=\"app\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 5, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "editorMode": "code", + "expr": "http_requests_in_progress", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Active Requests", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "editorMode": "code", + "expr": "sum(rate(http_requests_total{status_code=~\"5..\"}[5m]))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Error Rate", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 1, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "editorMode": "code", + "expr": "sum(rate(http_requests_total[5m])) by (endpoint)", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Request Rate", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "scaleDistribution": { + "type": "linear" + } + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 3, + "options": { + "calculate": false, + "cellGap": 1, + "color": { + "exponent": 0.5, + "fill": "dark-orange", + "mode": "scheme", + "reverse": false, + "scale": "exponential", + "scheme": "Oranges", + "steps": 64 + }, + "exemplars": { + "color": "rgba(255,0,255,0.7)" + }, + "filterValues": { + "le": 1e-9 + }, + "legend": { + "show": true + }, + "rowsFrame": { + "layout": "auto" + }, + "tooltip": { + "mode": "single", + "showColorScale": false, + "yHistogram": false + }, + "yAxis": { + "axisPlacement": "left", + "reverse": false + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Request Duration p95", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "scaleDistribution": { + "type": "linear" + } + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 4, + "options": { + "calculate": false, + "cellGap": 1, + "color": { + "exponent": 0.5, + "fill": "dark-orange", + "mode": "scheme", + "reverse": false, + "scale": "exponential", + "scheme": "Oranges", + "steps": 64 + }, + "exemplars": { + "color": "rgba(255,0,255,0.7)" + }, + "filterValues": { + "le": 1e-9 + }, + "legend": { + "show": true + }, + "rowsFrame": { + "layout": "auto" + }, + "tooltip": { + "mode": "single", + "showColorScale": false, + "yHistogram": false + }, + "yAxis": { + "axisPlacement": "left", + "reverse": false + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "afgj96bua3bpce" + }, + "editorMode": "code", + "expr": "rate(http_request_duration_seconds_bucket[5m])", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Request Duration Heatmap", + "type": "heatmap" + } + ], + "preload": false, + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Custom", + "uid": "adksq66", + "version": 10 +} From b9c3bfb6916bafca8a8881572316ced5b3c3ffcd Mon Sep 17 00:00:00 2001 From: LocalT0aster <90502400+LocalT0aster@users.noreply.github.com> Date: Fri, 20 Mar 2026 03:57:52 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=98=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- monitoring/docker-compose.yml | 23 +- monitoring/docs/LAB08.md | 481 +++++++++++++++++++++++++++++----- 2 files changed, 433 insertions(+), 71 deletions(-) diff --git a/monitoring/docker-compose.yml b/monitoring/docker-compose.yml index 60d0eaa366..8b155f0c50 100644 --- a/monitoring/docker-compose.yml +++ b/monitoring/docker-compose.yml @@ -43,6 +43,17 @@ services: - promtail-data:/run/promtail - /var/run/docker.sock:/var/run/docker.sock:ro - /var/lib/docker/containers:/var/lib/docker/containers:ro + healthcheck: + test: + - CMD-SHELL + - >- + bash -lc 'exec 3<>/dev/tcp/127.0.0.1/9080 + && printf "GET /ready HTTP/1.0\r\nHost: 127.0.0.1\r\n\r\n" >&3 + && grep -q "200 OK" <&3' + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s deploy: resources: limits: @@ -81,7 +92,7 @@ services: deploy: resources: limits: - cpus: "1.0" + cpus: "0.5" memory: 512M reservations: cpus: "0.25" @@ -94,11 +105,21 @@ services: image: prom/prometheus:v3.9.0 command: - --config.file=/etc/prometheus/prometheus.yml + - --storage.tsdb.retention.time=15d + - --storage.tsdb.retention.size=10GB ports: - "9090:9090" volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prometheus-data:/prometheus + healthcheck: + test: + - CMD-SHELL + - wget --no-verbose --tries=1 --spider http://127.0.0.1:9090/-/healthy || exit 1 + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s deploy: resources: limits: diff --git a/monitoring/docs/LAB08.md b/monitoring/docs/LAB08.md index 28ac983d68..053664e40b 100644 --- a/monitoring/docs/LAB08.md +++ b/monitoring/docs/LAB08.md @@ -1,18 +1,95 @@ -# LAB08 - Metrics and Monitoring (Tasks 2-3) +# LAB08 - Metrics and Monitoring -## 1. Overview +## Task 1 — Application Instrumentation -Prometheus was added to the existing Lab 7 monitoring stack in [docker-compose.yml](/home/t0ast/Repos/DevOps-Core-S26/monitoring/docker-compose.yml) and configured in [prometheus/prometheus.yml](/home/t0ast/Repos/DevOps-Core-S26/monitoring/prometheus/prometheus.yml). +### Metrics Added -Key decisions: +The Python service was instrumented with Prometheus metrics in `app_python/src/metrics.py` and `app_python/src/router.py`. -- `prom/prometheus:v3.9.0` is exposed on `localhost:9090` -- metrics are stored in the `prometheus-data` named volume -- Prometheus scrapes every `15s` -- the Python app image was updated to `localt0aster/devops-app-py:1.8.806c77e` so the stack uses the branch build that already contains the Lab 8 `/metrics` endpoint -- scrape jobs cover `prometheus`, `app-python`, `loki`, and `grafana` +- `http_requests_total` + - Counter for total HTTP requests + - Labels: `method`, `endpoint`, `status_code` +- `http_request_duration_seconds` + - Histogram for request latency + - Labels: `method`, `endpoint`, `status_code` +- `http_requests_in_progress` + - Gauge for active in-flight requests + - Labels: `method`, `endpoint` +- `devops_info_endpoint_calls_total` + - Counter for endpoint usage inside the app + - Labels: `endpoint` +- `devops_info_system_info_duration_seconds` + - Histogram for the platform-info collection path + - No labels -## 2. Commands Used +### Why These Metrics + +The metric set follows the RED method for a request-driven service. + +- Rate: `http_requests_total` +- Errors: `http_requests_total{status_code=~"5.."}` +- Duration: `http_request_duration_seconds` + +Two extra business-level metrics were added so the dashboard shows something specific to this service rather than only generic HTTP traffic. + +### Labeling Choices + +- Matched routes use normalized endpoint labels such as `/`, `/health`, and `/metrics` +- Unknown routes are grouped as `endpoint="unmatched"` to keep cardinality low +- The implementation uses `status_code`, not `status` + +That last point matters because some of the lab examples use `status`, but this service exports `status_code`. + +### Metrics vs Logs + +Metrics and logs solve different problems. + +- Metrics answer trend questions quickly: request rate, latency, error rate, uptime +- Logs answer forensic questions: which request failed, what stack trace occurred, what client sent the request +- Lab 7 kept Loki + Promtail for logs +- Lab 8 adds Prometheus for numeric time-series monitoring + +In practice: + +- Use metrics for dashboards, SLO-style views, and alert conditions +- Use logs for debugging after a metric tells you something is wrong + +## Task 2 — Prometheus Setup + +### Architecture + +```mermaid +flowchart TD + A[app-python:8000
/metrics] + P[prometheus:9090
TSDB + retention] + G[grafana:3000
dashboards + panels] + PT[promtail] + L[loki] + + A -- scrape every 15s --> P + P -- query / visualize --> G + + A -- stdout logs --> PT + PT --> L + L --> G +``` + +### Prometheus Configuration + +Prometheus was added to the existing monitoring stack in `monitoring/docker-compose.yml` and configured with `monitoring/prometheus/prometheus.yml`. + +Current scrape targets: + +- `prometheus` -> `localhost:9090` +- `app` -> `app-python:8000/metrics` +- `loki` -> `loki:3100/metrics` +- `grafana` -> `grafana:3000/metrics` + +Current scrape/evaluation interval: + +- `15s` + +### Task 2 Commands Used ```bash PS1="$ " @@ -21,41 +98,27 @@ docker compose up -d docker compose ps | tee /tmp/lab08_task2_compose_ps.txt curl -fSs http://127.0.0.1:9090/api/v1/targets \ | jq '{status, data: {activeTargets: [.data.activeTargets[] | {labels, scrapeUrl, lastError, health}]}}' \ - | tee /tmp/lab08_task2_targets.json + | tee /tmp/lab08_task2_targets_final.json curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query \ | jq '{status, data: {resultType: .data.resultType, result: .data.result}}' \ - | tee /tmp/lab08_task2_up.json + | tee /tmp/lab08_task2_up_final.json ``` -## 3. Evidence +### Task 2 Evidence -Screenshots captured: +Prometheus target screenshot: ![](img/lab08_task2_targets.png) -![](img/lab08_task2_up_query.png) -
-docker compose ps output +PromQL `up` screenshot: -```text -$ docker compose ps | tee /tmp/lab08_task2_compose_ps.txt -NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS -monitoring-app-go-1 localt0aster/devops-app-go:1.7.9a42ee5 "/devops-info-servic…" app-go 23 minutes ago Up 23 minutes 0.0.0.0:8001->8001/tcp, [::]:8001->8001/tcp -monitoring-app-go-healthcheck-1 curlimages/curl:8.18.0 "/entrypoint.sh sh -…" app-go-healthcheck 23 minutes ago Up 23 minutes (healthy) -monitoring-app-python-1 localt0aster/devops-app-py:1.8.806c77e "sh -c 'gunicorn --c…" app-python 23 minutes ago Up 23 minutes (healthy) 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp -monitoring-grafana-1 grafana/grafana:12.3.1 "/run.sh" grafana 23 minutes ago Up 23 minutes (healthy) 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp -monitoring-loki-1 grafana/loki:3.0.0 "/usr/bin/loki -conf…" loki 23 minutes ago Up 23 minutes (healthy) 0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp -monitoring-prometheus-1 prom/prometheus:v3.9.0 "/bin/prometheus --c…" prometheus 23 minutes ago Up 23 minutes 0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp -monitoring-promtail-1 grafana/promtail:3.0.0 "/usr/bin/promtail -…" promtail 23 minutes ago Up 23 minutes 0.0.0.0:9080->9080/tcp, [::]:9080->9080/tcp -``` - -
+![](img/lab08_task2_up_query.png)
/api/v1/targets output ```json -$ curl -fSs http://127.0.0.1:9090/api/v1/targets | jq '{status, data: {activeTargets: [.data.activeTargets[] | {labels, scrapeUrl, lastError, health}]}}' | tee /tmp/lab08_task2_targets.json +$ curl -fSs http://127.0.0.1:9090/api/v1/targets | jq '{status, data: {activeTargets: [.data.activeTargets[] | {labels, scrapeUrl, lastError, health}]}}' | tee /tmp/lab08_task2_targets_final.json { "status": "success", "data": { @@ -107,7 +170,7 @@ $ curl -fSs http://127.0.0.1:9090/api/v1/targets | jq '{status, data: {activeTar query=up output ```json -$ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq '{status, data: {resultType: .data.resultType, result: .data.result}}' | tee /tmp/lab08_task2_up.json +$ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq '{status, data: {resultType: .data.resultType, result: .data.result}}' | tee /tmp/lab08_task2_up_final.json { "status": "success", "data": { @@ -120,7 +183,7 @@ $ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq "job": "grafana" }, "value": [ - 1773963907.906, + 1773967701.736, "1" ] }, @@ -131,7 +194,7 @@ $ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq "job": "prometheus" }, "value": [ - 1773963907.906, + 1773967701.736, "1" ] }, @@ -142,7 +205,7 @@ $ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq "job": "app" }, "value": [ - 1773963907.906, + 1773967701.736, "1" ] }, @@ -153,7 +216,7 @@ $ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq "job": "loki" }, "value": [ - 1773963907.906, + 1773967701.736, "1" ] } @@ -164,53 +227,72 @@ $ curl -fSsG --data-urlencode 'query=up' http://127.0.0.1:9090/api/v1/query | jq
-## 4. Notes +## Task 3 — Grafana Dashboards + +### Prometheus Data Source + +The Prometheus data source was added in Grafana with: + +- URL: `http://prometheus:9090` +- access mode: proxy + +### Dashboard Walkthrough -- Grafana reported `DOWN` on the very first Prometheus scrape because the container was still starting; it flipped to `UP` on the next 15-second scrape without any config change. -- The stack is currently running locally, so `http://localhost:9090/targets` and `http://localhost:9090/graph?g0.expr=up` can be opened directly for manual inspection. +The exported dashboard is stored in `monitoring/grafana/dashbboard.json`. -## 5. Task 3 Overview +Panels in the current dashboard: -A custom Grafana dashboard was created and exported to `monitoring/docs/dashbboard.json`. +- `Status Code Distribution` + - Type: `piechart` + - Query: `sum by (status_code) (rate(http_requests_total[5m]))` + - Purpose: show 2xx/4xx/5xx mix +- `Uptime` + - Type: `stat` + - Query: `up{job="app"}` + - Purpose: show whether the app is scrapeable +- `Active Requests` + - Type: `timeseries` + - Query: `http_requests_in_progress` + - Purpose: show in-flight request concurrency +- `Error Rate` + - Type: `timeseries` + - Query: `sum(rate(http_requests_total{status_code=~"5.."}[5m]))` + - Purpose: highlight 5xx traffic +- `Request Rate` + - Type: `timeseries` + - Query: `sum(rate(http_requests_total[5m])) by (endpoint)` + - Purpose: show throughput per endpoint +- `Request Duration p95` + - Type: `timeseries` + - Query: `histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))` + - Purpose: track latency percentile +- `Request Duration Heatmap` + - Type: `heatmap` + - Query: `rate(http_request_duration_seconds_bucket[5m])` + - Purpose: visualize latency distribution -During documentation review, the exported dashboard JSON was corrected in two places so it matches the actual app metrics from Task 1: +### Task 3 Notes -- `status` was changed to `status_code` in the status distribution and error-rate queries -- the `Request Duration p95` panel type was changed from `heatmap` to `timeseries` +Two corrections were made to the exported JSON during the final review: -## 6. Dashboard Panels +- `status` was replaced with `status_code` +- `Request Duration p95` was corrected from `heatmap` to `timeseries` -- `Status Code Distribution` (`piechart`): `sum by (status_code) (rate(http_requests_total[5m]))` -- `Uptime` (`stat`): `up{job="app"}` -- `Active Requests` (`timeseries`): `http_requests_in_progress` -- `Error Rate` (`timeseries`): `sum(rate(http_requests_total{status_code=~"5.."}[5m]))` -- `Request Rate` (`timeseries`): `sum(rate(http_requests_total[5m])) by (endpoint)` -- `Request Duration p95` (`timeseries`): `histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))` -- `Request Duration Heatmap` (`heatmap`): `rate(http_request_duration_seconds_bucket[5m])` +These changes align the dashboard with the actual metric schema emitted by the Python app. -## 7. Task 3 Commands Used +### Task 3 Commands Used ```bash PS1="$ " cd monitoring +jq '{uid, title, panels: [.panels[] | {title, type, expr: .targets[0].expr}]}' monitoring/grafana/dashbboard.json \ + | tee /tmp/lab08_task3_dashboard_summary.json curl -fSsG --data-urlencode 'query=http_requests_total' http://127.0.0.1:9090/api/v1/query \ | jq '{status, data: {resultType: .data.resultType, resultCount: (.data.result | length), result: .data.result[0:4]}}' \ | tee /tmp/lab08_task3_requests_total.json -curl -fSsG --data-urlencode 'query=http_requests_total{method="GET"}' http://127.0.0.1:9090/api/v1/query \ - | jq '{status, data: {resultType: .data.resultType, resultCount: (.data.result | length), result: .data.result[0:4]}}' \ - | tee /tmp/lab08_task3_requests_get.json -curl -fSsG --data-urlencode 'query=devops_info_endpoint_calls_total' http://127.0.0.1:9090/api/v1/query \ - | jq '{status, data: {resultType: .data.resultType, resultCount: (.data.result | length), result: .data.result[0:4]}}' \ - | tee /tmp/lab08_task3_endpoint_calls.json -jq '{title, panels: [.panels[] | {title, type, expr: .targets[0].expr}]}' monitoring/docs/dashbboard.json \ - | tee /tmp/lab08_task3_dashboard_summary.json ``` -## 8. Task 3 Evidence - -Exported dashboard JSON: - -- `monitoring/docs/dashbboard.json` +### Task 3 Evidence Custom dashboard screenshot: @@ -220,8 +302,9 @@ Custom dashboard screenshot: dashboard export summary output ```json -$ jq '{title, panels: [.panels[] | {title, type, expr: .targets[0].expr}]}' monitoring/docs/dashbboard.json | tee /tmp/lab08_task3_dashboard_summary.json +$ jq '{uid, title, panels: [.panels[] | {title, type, expr: .targets[0].expr}]}' monitoring/grafana/dashbboard.json | tee /tmp/lab08_task3_dashboard_summary.json { + "uid": "adksq66", "title": "Custom", "panels": [ { @@ -265,7 +348,265 @@ $ jq '{title, panels: [.panels[] | {title, type, expr: .targets[0].expr}]}' moni -## 9. Task 3 Notes +
+http_requests_total query output + +```json +$ curl -fSsG --data-urlencode 'query=http_requests_total' http://127.0.0.1:9090/api/v1/query | jq '{status, data: {resultType: .data.resultType, resultCount: (.data.result | length), result: .data.result[0:4]}}' | tee /tmp/lab08_task3_requests_total.json +{ + "status": "success", + "data": { + "resultType": "vector", + "resultCount": 4, + "result": [ + { + "metric": { + "__name__": "http_requests_total", + "endpoint": "/health", + "instance": "app-python:8000", + "job": "app", + "method": "GET", + "status_code": "200" + }, + "value": [ + 1773967701.768, + "9" + ] + }, + { + "metric": { + "__name__": "http_requests_total", + "endpoint": "/metrics", + "instance": "app-python:8000", + "job": "app", + "method": "GET", + "status_code": "200" + }, + "value": [ + 1773967701.768, + "8" + ] + }, + { + "metric": { + "__name__": "http_requests_total", + "endpoint": "/metrics", + "instance": "app-python:8000", + "job": "app", + "method": "HEAD", + "status_code": "200" + }, + "value": [ + 1773967701.768, + "1" + ] + }, + { + "metric": { + "__name__": "http_requests_total", + "endpoint": "/", + "instance": "app-python:8000", + "job": "app", + "method": "GET", + "status_code": "200" + }, + "value": [ + 1773967701.768, + "5" + ] + } + ] + } +} +``` + +
+ +## Task 4 — Production Configuration + +### Health Checks + +The stack now includes production-style health checks for the services that can reasonably self-test. + +- `loki` + - endpoint: `http://127.0.0.1:3100/ready` +- `grafana` + - endpoint: `http://127.0.0.1:3000/api/health` +- `prometheus` + - endpoint: `http://127.0.0.1:9090/-/healthy` +- `promtail` + - endpoint: `http://127.0.0.1:9080/ready` + - implemented with `bash` + `/dev/tcp` because this image does not include `wget` or `curl` +- `app-python` + - endpoint: `http://127.0.0.1:8000/health` +- `app-go` + - monitored by the existing `app-go-healthcheck` helper container + - reason: the Go image is built `FROM scratch`, so it cannot run an in-container shell-based HTTP probe + +### Resource Limits + +Configured limits in `monitoring/docker-compose.yml`: + +- Prometheus: `1.0` CPU, `1G` memory +- Loki: `1.0` CPU, `1G` memory +- Grafana: `0.5` CPU, `512M` memory +- app-python: `0.5` CPU, `256M` memory +- app-go: `0.5` CPU, `256M` memory +- Promtail: `0.5` CPU, `256M` memory + +### Retention and Persistence + +Prometheus retention is enforced through container flags: + +- `--storage.tsdb.retention.time=15d` +- `--storage.tsdb.retention.size=10GB` + +Persistent volumes in the stack: + +- `prometheus-data` +- `loki-data` +- `grafana-data` +- `promtail-data` + +### Task 4 Commands Used + +```bash +PS1="$ " +cd monitoring +set -a && source .env +curl -fSs -u "$GRAFANA_ADMIN_USER:$GRAFANA_ADMIN_PASSWORD" 'http://127.0.0.1:3000/api/search?query=Custom' \ + | jq '{count: length, dashboards: [.[] | {uid, title, url}]}' \ + | tee /tmp/lab08_task4_grafana_before.json +docker compose down +docker compose up -d +docker compose ps | tee /tmp/lab08_task4_compose_ps_final.txt +curl -fSs -u "$GRAFANA_ADMIN_USER:$GRAFANA_ADMIN_PASSWORD" 'http://127.0.0.1:3000/api/search?query=Custom' \ + | jq '{count: length, dashboards: [.[] | {uid, title, url}]}' \ + | tee /tmp/lab08_task4_grafana_after.json +docker inspect monitoring-prometheus-1 --format '{{json .Config.Healthcheck.Test}} {{json .Config.Cmd}}' \ + | tee /tmp/lab08_task4_prometheus_inspect.txt +``` + +### Task 4 Evidence + +
+docker compose ps after restart + +```text +$ docker compose ps | tee /tmp/lab08_task4_compose_ps_final.txt +NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +monitoring-app-go-1 localt0aster/devops-app-go:1.7.9a42ee5 "/devops-info-servic…" app-go 2 minutes ago Up 2 minutes 0.0.0.0:8001->8001/tcp, [::]:8001->8001/tcp +monitoring-app-go-healthcheck-1 curlimages/curl:8.18.0 "/entrypoint.sh sh -…" app-go-healthcheck 2 minutes ago Up 2 minutes (healthy) +monitoring-app-python-1 localt0aster/devops-app-py:1.8.806c77e "sh -c 'gunicorn --c…" app-python 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp +monitoring-grafana-1 grafana/grafana:12.3.1 "/run.sh" grafana 2 minutes ago Up About a minute (healthy) 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp +monitoring-loki-1 grafana/loki:3.0.0 "/usr/bin/loki -conf…" loki 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp +monitoring-prometheus-1 prom/prometheus:v3.9.0 "/bin/prometheus --c…" prometheus 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:9090->9090/tcp, [::]:9090->9090/tcp +monitoring-promtail-1 grafana/promtail:3.0.0 "/usr/bin/promtail -…" promtail 23 seconds ago Up 22 seconds (healthy) 0.0.0.0:9080->9080/tcp, [::]:9080->9080/tcp +``` + +
+ +
+Grafana dashboard inventory before restart + +```json +$ curl -fSs -u "$GRAFANA_ADMIN_USER:$GRAFANA_ADMIN_PASSWORD" 'http://127.0.0.1:3000/api/search?query=Custom' | jq '{count: length, dashboards: [.[] | {uid, title, url}]}' | tee /tmp/lab08_task4_grafana_before.json +{ + "count": 2, + "dashboards": [ + { + "uid": "adksq66", + "title": "Custom", + "url": "/d/adksq66/custom" + }, + { + "uid": "adksq661", + "title": "Custom2", + "url": "/d/adksq661/custom2" + } + ] +} +``` + +
+ +
+Grafana dashboard inventory after restart + +```json +$ curl -fSs -u "$GRAFANA_ADMIN_USER:$GRAFANA_ADMIN_PASSWORD" 'http://127.0.0.1:3000/api/search?query=Custom' | jq '{count: length, dashboards: [.[] | {uid, title, url}]}' | tee /tmp/lab08_task4_grafana_after.json +{ + "count": 2, + "dashboards": [ + { + "uid": "adksq66", + "title": "Custom", + "url": "/d/adksq66/custom" + }, + { + "uid": "adksq661", + "title": "Custom2", + "url": "/d/adksq661/custom2" + } + ] +} +``` + +
+ +
+Prometheus healthcheck and retention flags + +```text +$ docker inspect monitoring-prometheus-1 --format '{{json .Config.Healthcheck.Test}} {{json .Config.Cmd}}' | tee /tmp/lab08_task4_prometheus_inspect.txt +["CMD-SHELL","wget --no-verbose --tries=1 --spider http://127.0.0.1:9090/-/healthy || exit 1"] ["--config.file=/etc/prometheus/prometheus.yml","--storage.tsdb.retention.time=15d","--storage.tsdb.retention.size=10GB"] +``` + +
+ +### Persistence Result + +Dashboard persistence was confirmed because the same Grafana dashboard UIDs existed before and after `docker compose down` and `docker compose up -d`. + +## Task 5 — Final Documentation Pass + +### PromQL Examples + +The following queries match the actual exported label names: + +- `up{job="app"}` + - Is the Python app currently scrapeable? +- `sum(rate(http_requests_total[5m])) by (endpoint)` + - Requests per second per endpoint +- `sum(rate(http_requests_total{status_code=~"5.."}[5m]))` + - 5xx error rate +- `sum by (status_code) (rate(http_requests_total[5m]))` + - Status-code distribution for the pie chart +- `http_requests_in_progress` + - Current in-flight requests +- `histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))` + - p95 latency estimate +- `devops_info_endpoint_calls_total` + - App-specific endpoint usage counter + +### Testing Results + +What was verified during this lab: + +- the Python app exposes `/metrics` +- Prometheus scrapes the app, Loki, Grafana, and itself successfully +- Grafana dashboard panels render live Prometheus data +- Prometheus retention flags are applied to the running container +- Grafana dashboards persist across `docker compose down` and `up -d` +- Promtail, Loki, Grafana, Prometheus, and the Python app all report healthy status after the final restart + +### Challenges and Solutions -- The exported filename is kept as `dashbboard.json` because that is the currently staged artifact. -- The error-rate query currently returns no samples for the present scrape window, which is expected while the app is healthy and no `5xx` responses are being generated. +- Challenge: the branch image tag mattered because the older published Python image did not contain the new `/metrics` endpoint + - Solution: use `localt0aster/devops-app-py:1.8.806c77e` +- Challenge: the lab examples used `status`, while the implemented app uses `status_code` + - Solution: adapt the Grafana and PromQL queries to `status_code` +- Challenge: the Promtail image does not include `wget` or `curl` + - Solution: use a `bash` + `/dev/tcp` healthcheck against `/ready` +- Challenge: the Go service is built from `scratch`, so it cannot run a normal in-container HTTP healthcheck + - Solution: keep the dedicated `app-go-healthcheck` helper container