From 558f69287c1bf6dc581ebf9193ea8739d6dbdead Mon Sep 17 00:00:00 2001 From: Zack Winter <3457246+zackwintermdb@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:51:09 -0700 Subject: [PATCH] SERVER-82192 Remove mongo-tooling-metrics (#35332) GitOrigin-RevId: 289c8047fe9a9e8ff4ba6c3d48bea79fb379ee98 --- buildscripts/resmokelib/BUILD.bazel | 8 +- buildscripts/resmokelib/cli.py | 6 -- docs/testing/README.md | 4 +- docs/testing/otel_resmoke.md | 2 +- poetry.lock | 128 ++++------------------------ pyproject.toml | 9 -- 6 files changed, 23 insertions(+), 134 deletions(-) diff --git a/buildscripts/resmokelib/BUILD.bazel b/buildscripts/resmokelib/BUILD.bazel index 668b9a951ae..3d046ec2d79 100644 --- a/buildscripts/resmokelib/BUILD.bazel +++ b/buildscripts/resmokelib/BUILD.bazel @@ -40,14 +40,14 @@ py_library( "psutil", group = "build-metrics", ), - dependency( - "mongo-tooling-metrics", - group = "tooling-metrics", - ), dependency( "pyyaml", group = "core", ), + dependency( + "gitpython", + group = "evergreen", + ), dependency( "opentelemetry-api", group = "testing", diff --git a/buildscripts/resmokelib/cli.py b/buildscripts/resmokelib/cli.py index fc448b9d268..28e42c6a741 100644 --- a/buildscripts/resmokelib/cli.py +++ b/buildscripts/resmokelib/cli.py @@ -2,10 +2,8 @@ import os import time -from datetime import datetime import psutil -from mongo_tooling_metrics.lib.top_level_metrics import ResmokeToolingMetrics from buildscripts.resmokelib import parser @@ -28,8 +26,4 @@ def main(argv): "For example: resmoke.py run -h\n" "Note: bisect, setup-multiversion and symbolize subcommands have been moved to db-contrib-tool (https://github.com/10gen/db-contrib-tool#readme).\n", ) - ResmokeToolingMetrics.register_metrics( - utc_starttime=datetime.utcfromtimestamp(__start_time), - parser=parser.get_parser(), - ) subcommand.execute() diff --git a/docs/testing/README.md b/docs/testing/README.md index 8c88191f481..c1754ac7d50 100644 --- a/docs/testing/README.md +++ b/docs/testing/README.md @@ -37,8 +37,6 @@ pass `--installDir` to resmoke.py ### Resmoke test telemetry -We capture telemetry from resmoke using two systems: mongo-tooling-metrics and open telemetry. - -Using mongo-tooling-metrics we capture the invocation, results, and timing data from internal developers. This data is used to see what developers are doing. We can study what people are running to make it work better or faster. +We capture telemetry from resmoke using open telemetry. Using open telemetry (OTel) we capture more specific information about the internals of resmoke. This data is used for improvements specifically when running in evergreen. This data is captured on every resmoke invocation but only sent to honeycomb when running in evergreen. More info about how we use OTel in resmoke can be found [here](otel_resmoke.md). diff --git a/docs/testing/otel_resmoke.md b/docs/testing/otel_resmoke.md index 4a9f19a90f4..e393bf736f6 100644 --- a/docs/testing/otel_resmoke.md +++ b/docs/testing/otel_resmoke.md @@ -1,6 +1,6 @@ # Open telemetry (OTel) in resmoke -OTel is one of two systems we use to capture metrics from resmoke. For mongo-tooling-metrics please see the documentation [here](README.md). +OTel is what we use to capture metrics from resmoke. ## What Do We Capture diff --git a/poetry.lock b/poetry.lock index 02bbe41305a..e0247f20a6f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -102,7 +102,7 @@ version = "1.36.18" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" -groups = ["aws", "platform", "tooling-metrics"] +groups = ["aws"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "boto3-1.36.18-py3-none-any.whl", hash = "sha256:084ff25af2d7bda3102d6367f5453e2e83f8cde1da73079ea144595b03cb9400"}, @@ -123,7 +123,7 @@ version = "1.36.18" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" -groups = ["aws", "platform", "tooling-metrics"] +groups = ["aws"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "botocore-1.36.18-py3-none-any.whl", hash = "sha256:7898d109affd9231c555e71fda88308c1da2db8d39e83d33eb8cb40ebf1ba82f"}, @@ -714,7 +714,7 @@ version = "1.9.0" description = "Distro - an OS platform information API" optional = false python-versions = ">=3.6" -groups = ["platform", "testing", "tooling-metrics"] +groups = ["testing"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, @@ -727,7 +727,7 @@ version = "2.7.0" description = "DNS toolkit" optional = false python-versions = ">=3.9" -groups = ["main", "core", "platform", "testing", "tooling-metrics"] +groups = ["main", "core", "testing"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"}, @@ -1126,7 +1126,7 @@ version = "4.0.12" description = "Git Object Database" optional = false python-versions = ">=3.7" -groups = ["evergreen", "lint", "platform", "tooling-metrics"] +groups = ["evergreen", "lint"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf"}, @@ -1142,7 +1142,7 @@ version = "3.1.44" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" -groups = ["evergreen", "lint", "platform", "tooling-metrics"] +groups = ["evergreen", "lint"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110"}, @@ -1588,7 +1588,7 @@ version = "1.0.1" description = "JSON Matching Expressions" optional = false python-versions = ">=3.7" -groups = ["aws", "platform", "tooling-metrics"] +groups = ["aws"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, @@ -2032,48 +2032,6 @@ build = ["blurb", "twine", "wheel"] docs = ["sphinx"] test = ["pytest", "pytest-cov"] -[[package]] -name = "mongo-ninja-python" -version = "1.11.1.7" -description = "" -optional = false -python-versions = "*" -groups = ["platform"] -markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\"" -files = [ - {file = "mongo_ninja_python-1.11.1.7-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:0a9999cb54d1898bbfd228fe479e288abf39a2cca275759122db44d4d5bcdd53"}, - {file = "mongo_ninja_python-1.11.1.7-py2.py3-none-macosx_11_0_x86_64.whl", hash = "sha256:3626cd92b68e1690d250255d337997b17f379750b368af22bf5b3effb5b68d8b"}, - {file = "mongo_ninja_python-1.11.1.7-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:094683a0eb2d0572b2d844ca8448c87466dc06adbf530184b9747ead6339df14"}, - {file = "mongo_ninja_python-1.11.1.7-py2.py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:d10dbee1cc42f081f9f0e01d615e2720784604fe7be5d80f2b6a99345178ef24"}, - {file = "mongo_ninja_python-1.11.1.7-py2.py3-none-win_amd64.whl", hash = "sha256:afd8de282d86903353a7412855da59b8cb3df9af6bb23d6a924b7a546e17bc76"}, -] - -[package.dependencies] -mongo-tooling-metrics = "1.0.8" - -[package.extras] -test = ["codecov (>=2.0.5)", "coverage (>=4.2)", "flake8 (>=3.0.4)", "pytest (>=4.5.0)", "pytest-cov (>=2.7.1)", "pytest-runner (>=5.1)", "pytest-virtualenv (>=1.7.0)", "virtualenv (>=15.0.3)"] - -[[package]] -name = "mongo-tooling-metrics" -version = "1.0.8" -description = "A slim library which leverages Pydantic to reliably collect type enforced metrics and store them to MongoDB." -optional = false -python-versions = ">=3.7,<4.0" -groups = ["platform", "tooling-metrics"] -markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" -files = [ - {file = "mongo_tooling_metrics-1.0.8-py3-none-any.whl", hash = "sha256:6f022c07e55bedd06c9fbb19daf4118b38ac1bc290c9a645b5c1ef39cf905003"}, - {file = "mongo_tooling_metrics-1.0.8.tar.gz", hash = "sha256:1f10712b237a8c99551a4b63ce4e62db42aca05ef6d054af728b55081dd477d4"}, -] - -[package.dependencies] -distro = ">=1.5.0,<2.0.0" -gitpython = ">=3.1.29,<4.0.0" -pydantic = ">=1.8.2,<2.0.0" -pymongo = {version = ">=4.3.3,<5.0.0", extras = ["aws"]} -setuptools = ">=58.1.0,<59.0.0" - [[package]] name = "mongomock" version = "4.3.0" @@ -2273,37 +2231,6 @@ example = ["cairocffi (>=1.7)", "contextily (>=1.6)", "igraph (>=0.11)", "momepy extra = ["lxml (>=4.6)", "pydot (>=3.0.1)", "pygraphviz (>=1.14)", "sympy (>=1.10)"] test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] -[[package]] -name = "ninja" -version = "1.11.1.3" -description = "Ninja is a small build system with a focus on speed" -optional = false -python-versions = ">=3.7" -groups = ["platform"] -markers = "platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" -files = [ - {file = "ninja-1.11.1.3-py3-none-macosx_10_9_universal2.whl", hash = "sha256:2b4879ea3f1169f3d855182c57dcc84d1b5048628c8b7be0d702b81882a37237"}, - {file = "ninja-1.11.1.3-py3-none-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bc3ebc8b2e47716149f3541742b5cd8e0b08f51013b825c05baca3e34854370d"}, - {file = "ninja-1.11.1.3-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a27e78ca71316c8654965ee94b286a98c83877bfebe2607db96897bbfe458af0"}, - {file = "ninja-1.11.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2883ea46b3c5079074f56820f9989c6261fcc6fd873d914ee49010ecf283c3b2"}, - {file = "ninja-1.11.1.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c4bdb9fd2d0c06501ae15abfd23407660e95659e384acd36e013b6dd7d8a8e4"}, - {file = "ninja-1.11.1.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:114ed5c61c8474df6a69ab89097a20749b769e2c219a452cb2fadc49b0d581b0"}, - {file = "ninja-1.11.1.3-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7fa2247fce98f683bc712562d82b22b8a0a5c000738a13147ca2d1b68c122298"}, - {file = "ninja-1.11.1.3-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:a38c6c6c8032bed68b70c3b065d944c35e9f903342875d3a3218c1607987077c"}, - {file = "ninja-1.11.1.3-py3-none-musllinux_1_1_i686.whl", hash = "sha256:56ada5d33b8741d298836644042faddebc83ee669782d661e21563034beb5aba"}, - {file = "ninja-1.11.1.3-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:53409151da081f3c198bb0bfc220a7f4e821e022c5b7d29719adda892ddb31bb"}, - {file = "ninja-1.11.1.3-py3-none-musllinux_1_1_s390x.whl", hash = "sha256:1ad2112c2b0159ed7c4ae3731595191b1546ba62316fc40808edecd0306fefa3"}, - {file = "ninja-1.11.1.3-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:28aea3c1c280cba95b8608d50797169f3a34280e3e9a6379b6e340f0c9eaeeb0"}, - {file = "ninja-1.11.1.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b6966f83064a88a51693073eea3decd47e08c3965241e09578ef7aa3a7738329"}, - {file = "ninja-1.11.1.3-py3-none-win32.whl", hash = "sha256:a4a3b71490557e18c010cbb26bd1ea9a0c32ee67e8f105e9731515b6e0af792e"}, - {file = "ninja-1.11.1.3-py3-none-win_amd64.whl", hash = "sha256:04d48d14ea7ba11951c156599ab526bdda575450797ff57c6fdf99b2554d09c7"}, - {file = "ninja-1.11.1.3-py3-none-win_arm64.whl", hash = "sha256:17978ad611d8ead578d83637f5ae80c2261b033db0b493a7ce94f88623f29e1b"}, - {file = "ninja-1.11.1.3.tar.gz", hash = "sha256:edfa0d2e9d7ead1635b03e40a32ad56cc8f56798b6e2e9848d8300b174897076"}, -] - -[package.extras] -test = ["coverage (>=4.2)", "importlib_metadata (>=2.0)", "pytest (>=6.0)", "pytest-cov (>=3)"] - [[package]] name = "nodeenv" version = "1.9.1" @@ -2840,7 +2767,7 @@ version = "1.10.21" description = "Data validation and settings management using python type hints" optional = false python-versions = ">=3.7" -groups = ["evergreen", "platform", "testing", "tooling-metrics"] +groups = ["evergreen", "testing"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "pydantic-1.10.21-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:245e486e0fec53ec2366df9cf1cba36e0bbf066af7cd9c974bbbd9ba10e1e586"}, @@ -2984,7 +2911,7 @@ version = "4.3.3" description = "Python driver for MongoDB " optional = false python-versions = ">=3.7" -groups = ["core", "platform", "tooling-metrics"] +groups = ["core"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "pymongo-4.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:74731c9e423c93cbe791f60c27030b6af6a948cef67deca079da6cd1bb583a8e"}, @@ -3065,7 +2992,6 @@ files = [ [package.dependencies] dnspython = ">=1.16.0,<3.0.0" -pymongo-auth-aws = {version = "<2.0.0", optional = true, markers = "extra == \"aws\""} [package.extras] aws = ["pymongo-auth-aws (<2.0.0)"] @@ -3075,26 +3001,6 @@ ocsp = ["certifi", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identit snappy = ["python-snappy"] zstd = ["zstandard"] -[[package]] -name = "pymongo-auth-aws" -version = "1.3.0" -description = "MONGODB-AWS authentication support for PyMongo" -optional = false -python-versions = ">=3.8" -groups = ["platform", "tooling-metrics"] -markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" -files = [ - {file = "pymongo_auth_aws-1.3.0-py3-none-any.whl", hash = "sha256:367f6d853da428a02e9e450422756133715d40f8141f47ae5d98f139a88c0ce5"}, - {file = "pymongo_auth_aws-1.3.0.tar.gz", hash = "sha256:d0fa893958dc525ca29f601c34f2ca73c860f66bc6511ec0a7da6eb7ea44e94f"}, -] - -[package.dependencies] -boto3 = "*" -botocore = "*" - -[package.extras] -test = ["dnspython (>=2.6.1)", "pymongo", "pytest"] - [[package]] name = "pympler" version = "1.1" @@ -3244,7 +3150,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["aws", "platform", "testing", "tooling-metrics"] +groups = ["aws", "testing"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, @@ -3954,7 +3860,7 @@ version = "0.11.2" description = "An Amazon S3 Transfer Manager" optional = false python-versions = ">=3.8" -groups = ["aws", "platform", "tooling-metrics"] +groups = ["aws"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "s3transfer-0.11.2-py3-none-any.whl", hash = "sha256:be6ecb39fadd986ef1701097771f87e4d2f821f27f6071c872143884d2950fbc"}, @@ -4048,7 +3954,7 @@ version = "58.5.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.6" -groups = ["main", "compile", "external-auth", "jira-client", "platform", "tooling-metrics"] +groups = ["main", "compile", "external-auth", "jira-client"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "setuptools-58.5.3-py3-none-any.whl", hash = "sha256:a481fbc56b33f5d8f6b33dce41482e64c68b668be44ff42922903b03872590bf"}, @@ -4097,7 +4003,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["aws", "external-auth", "platform", "testing", "tooling-metrics"] +groups = ["aws", "external-auth", "testing"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, @@ -4110,7 +4016,7 @@ version = "5.0.2" description = "A pure Python implementation of a sliding window memory map manager" optional = false python-versions = ">=3.7" -groups = ["evergreen", "lint", "platform", "tooling-metrics"] +groups = ["evergreen", "lint"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e"}, @@ -5007,7 +4913,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["main", "build-metrics", "core", "evergreen", "external-auth", "lint", "modules_poc", "platform", "testing", "tooling-metrics"] +groups = ["main", "build-metrics", "core", "evergreen", "external-auth", "lint", "modules_poc", "testing"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, @@ -5049,7 +4955,7 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["aws", "core", "export", "jira-client", "lint", "platform", "testing", "tooling-metrics"] +groups = ["aws", "core", "export", "jira-client", "lint", "testing"] markers = "platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"ppc64le\"" files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, @@ -5471,4 +5377,4 @@ libdeps = ["cxxfilt", "eventlet", "flask", "flask-cors", "gevent", "lxml", "prog [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "c4c9369fa7827678936179233006a36ee9c0c5df412f2eb3c2b5617069976440" +content-hash = "50b707c58dd8e0ba2895852418ccf797905c5600618df6a2b673b926f2340d11" diff --git a/pyproject.toml b/pyproject.toml index f9eca49139d..a28c454f3f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -130,12 +130,6 @@ pyzstd = { version = "^0.16.2", markers = "platform_machine != 's390x' and plat pypiwin32 = { version = ">=223", markers = "sys_platform == 'win32'" } pywin32 = { version = ">=225", markers = "sys_platform == 'win32'" } cryptography = "^44.0.2" -mongo-ninja-python = [ - { version = "1.11.1.7", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" }, -] -ninja = [ - { version = ">=1.10.0", markers = "platform_machine == 's390x' or platform_machine == 'ppc64le'" }, -] [tool.poetry.group.testing.dependencies] curatorbin = "^1.2.4" @@ -176,9 +170,6 @@ opentelemetry-sdk = "*" opentelemetry-exporter-otlp-proto-common = "*" opentelemetry-exporter-otlp-proto-grpc = { version = "*", markers = "platform_machine != 's390x' and platform_machine != 'ppc64le'" } -[tool.poetry.group.tooling-metrics.dependencies] -mongo-tooling-metrics = "1.0.8" - # This can be installed with "poetry install -E libdeps" [project.optional-dependencies] libdeps = [