From a8525d0db25d194305fe554026e2e8ca62182860 Mon Sep 17 00:00:00 2001 From: Zhengda Lu Date: Thu, 10 Apr 2025 17:23:53 +0000 Subject: [PATCH 1/7] Revert "Parse RDS end-of-life versions. (#19773)" This reverts commit caa7937869b7a6b6b006389c3cc8bcc24952fc5f. --- postgres/datadog_checks/postgres/version_utils.py | 11 ----------- postgres/tests/test_version_utils.py | 7 ------- 2 files changed, 18 deletions(-) diff --git a/postgres/datadog_checks/postgres/version_utils.py b/postgres/datadog_checks/postgres/version_utils.py index 89b27e3e3d735..854cd378d82a1 100644 --- a/postgres/datadog_checks/postgres/version_utils.py +++ b/postgres/datadog_checks/postgres/version_utils.py @@ -69,22 +69,11 @@ def parse_version(raw_version): version.append(0) return VersionInfo(*version) except ValueError: - pass - try: # Postgres might be in development, with format \d+[beta|rc]\d+ match = re.match(r'(\d+)([a-zA-Z]+)(\d+)', raw_version) if match: version = list(match.groups()) return VersionInfo.parse('{}.0.0-{}.{}'.format(*version)) - else: - raise ValueError('Unable to match development version') - except ValueError: - # RDS changes the version format when the version switches to EOL. - # Example: 11.22-rds.20241121. - match = re.match(r'(\d+\.\d+)-rds\.(\d+)', raw_version) - if match: - version = list(match.groups()) - return VersionInfo.parse('{}.{}'.format(*version)) raise Exception("Cannot determine which version is {}".format(raw_version)) @staticmethod diff --git a/postgres/tests/test_version_utils.py b/postgres/tests/test_version_utils.py index 7900d562a1d84..5189014b46054 100644 --- a/postgres/tests/test_version_utils.py +++ b/postgres/tests/test_version_utils.py @@ -79,10 +79,3 @@ def test_transform_version(): 'version.scheme': 'semver', } assert expected == version - - -def test_parse_rds_eol_version(): - version = '11.22-rds.20241121' - v11_22_rds = VersionUtils.parse_version(version) - - assert v11_22_rds == VersionInfo(11, 22, 20241121) From 7bc1521d1df3da247d0eaad468cba1ac8d5df300 Mon Sep 17 00:00:00 2001 From: Zhengda Lu Date: Thu, 10 Apr 2025 17:24:24 +0000 Subject: [PATCH 2/7] Revert "Omit .* regex filter (#19470)" This reverts commit 7551df997c2b6dd5126737299ea6c972d66982a4. --- postgres/datadog_checks/postgres/relationsmanager.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/postgres/datadog_checks/postgres/relationsmanager.py b/postgres/datadog_checks/postgres/relationsmanager.py index 3f3356beb7978..bbf3c2d9e4095 100644 --- a/postgres/datadog_checks/postgres/relationsmanager.py +++ b/postgres/datadog_checks/postgres/relationsmanager.py @@ -408,11 +408,8 @@ def filter_relation_query(self, query, schema_field): relation_filter = [] if r.get(RELATION_NAME): relation_filter.append("( relname = '{}'".format(r[RELATION_NAME])) - elif r.get(RELATION_REGEX) and r.get(RELATION_REGEX) != ".*": + elif r.get(RELATION_REGEX): relation_filter.append("( relname ~ '{}'".format(r[RELATION_REGEX])) - else: - # Stub filter to allow for appending - relation_filter.append("( 1=1") if ALL_SCHEMAS not in r[SCHEMAS]: schema_filter = ','.join("'{}'".format(s) for s in r[SCHEMAS]) From c0b274321792433101cf8954cb2358c70926ccfd Mon Sep 17 00:00:00 2001 From: Sarah Witt Date: Fri, 11 Apr 2025 09:03:10 -0400 Subject: [PATCH 3/7] Revert dependency bump (#20064) * resolve conflicts * remove uptime --- LICENSE-3rdparty.csv | 2 +- agent_requirements.in | 18 +++++++++--------- amazon_msk/pyproject.toml | 2 +- cisco_aci/pyproject.toml | 2 +- datadog_checks_base/pyproject.toml | 12 ++++++------ http_check/pyproject.toml | 2 +- kubevirt_api/pyproject.toml | 2 +- mongo/pyproject.toml | 2 +- mysql/pyproject.toml | 4 ++-- postgres/pyproject.toml | 6 +++--- riakcs/pyproject.toml | 2 +- spark/pyproject.toml | 2 +- sqlserver/pyproject.toml | 2 +- tls/pyproject.toml | 2 +- 14 files changed, 30 insertions(+), 30 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index ebf3a9f2186d8..f12308abc1cb7 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -11,7 +11,7 @@ binary,PyPI,Apache-2.0,Copyright 2018 Ofek Lev binary,PyPI,MIT,Copyright 2018 Ofek Lev boto3,PyPI,Apache-2.0,"Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved." botocore,PyPI,Apache-2.0,"Copyright 2012-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved." -cachetools,PyPI,MIT,Copyright (c) 2014-2025 Thomas Kemmer +cachetools,PyPI,MIT,Copyright (c) 2014-2024 Thomas Kemmer check-postgres,"https://github.com/bucardo/",BSD-2-Clause,Copyright 2007 - 2023 Greg Sabino Mullane clickhouse-cityhash,PyPI,MIT,"Copyright (c) 2011, Alexander Marshalov " clickhouse-driver,PyPI,MIT,Copyright (c) 2017 by Konstantin Lebedev. diff --git a/agent_requirements.in b/agent_requirements.in index 21d47ac161a16..461c991bb06c3 100644 --- a/agent_requirements.in +++ b/agent_requirements.in @@ -1,23 +1,23 @@ aerospike==7.1.1; sys_platform != 'win32' and sys_platform != 'darwin' aws-requests-auth==0.4.3 -azure-identity==1.20.0 -beautifulsoup4==4.13.3 +azure-identity==1.19.0 +beautifulsoup4==4.12.3 binary==1.0.1 -boto3==1.36.26 -botocore==1.36.26 -cachetools==5.5.2 +boto3==1.36.16 +botocore==1.36.16 +cachetools==5.5.1 clickhouse-cityhash==1.0.2.4 clickhouse-driver==0.2.9 cm-client==45.0.4 confluent-kafka==2.8.0 -cryptography==44.0.1 +cryptography==43.0.1 ddtrace==2.10.6 dnspython==2.7.0 foundationdb==6.3.24 hazelcast-python-client==5.5.0 in-toto==2.0.0 jellyfish==1.1.3 -kubernetes==32.0.1 +kubernetes==32.0.0 lazy-loader==0.4 ldap3==2.9.1 lxml==5.1.1 @@ -41,7 +41,7 @@ pymongo[srv]==4.8.0; python_version >= '3.9' pymqi==1.12.11; sys_platform != 'darwin' or platform_machine != 'arm64' pymysql==1.1.1 pyodbc==5.2.0; sys_platform != 'darwin' or platform_machine != 'arm64' -pyopenssl==24.3.0 +pyopenssl==24.2.1 pysmi==1.2.1 pysnmp-mibs==0.1.6 pysnmp==5.1.0 @@ -63,7 +63,7 @@ rethinkdb==2.4.10.post1 securesystemslib[crypto,pynacl]==0.28.0 semver==3.0.4 service-identity[idna]==24.2.0 -simplejson==3.20.1 +simplejson==3.19.3 snowflake-connector-python==3.13.2 supervisor==4.2.5 tuf==4.0.0 diff --git a/amazon_msk/pyproject.toml b/amazon_msk/pyproject.toml index d0e3676b07b69..52aadc98e5be3 100644 --- a/amazon_msk/pyproject.toml +++ b/amazon_msk/pyproject.toml @@ -36,7 +36,7 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "boto3==1.36.26", + "boto3==1.36.16", ] [project.urls] diff --git a/cisco_aci/pyproject.toml b/cisco_aci/pyproject.toml index e94542272e369..b95d5b2c853d3 100644 --- a/cisco_aci/pyproject.toml +++ b/cisco_aci/pyproject.toml @@ -36,7 +36,7 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "cryptography==44.0.1", + "cryptography==43.0.1", ] [project.urls] diff --git a/datadog_checks_base/pyproject.toml b/datadog_checks_base/pyproject.toml index 4245ddb53e858..cedf0a016bae7 100644 --- a/datadog_checks_base/pyproject.toml +++ b/datadog_checks_base/pyproject.toml @@ -35,8 +35,8 @@ db = [ ] deps = [ "binary==1.0.1", - "cachetools==5.5.2", - "cryptography==44.0.1", + "cachetools==5.5.1", + "cryptography==43.0.1", "ddtrace==2.10.6", "jellyfish==1.1.3", "lazy-loader==0.4", @@ -49,15 +49,15 @@ deps = [ "requests-toolbelt==1.0.0", "requests-unixsocket2==0.4.2", "requests==2.32.3", - "simplejson==3.20.1", + "simplejson==3.19.3", "wrapt==1.17.2", ] http = [ "aws-requests-auth==0.4.3", - "botocore==1.36.26", + "botocore==1.36.16", "oauthlib==3.2.2", "pyjwt==2.10.1", - "pyopenssl==24.3.0", + "pyopenssl==24.2.1", "pysocks==1.7.1", "requests-kerberos==0.15.0", "requests-ntlm==1.3.0", @@ -67,7 +67,7 @@ json = [ "orjson==3.10.15", ] kube = [ - "kubernetes==32.0.1", + "kubernetes==32.0.0", "requests-oauthlib==2.0.0", ] diff --git a/http_check/pyproject.toml b/http_check/pyproject.toml index d9b65c66411c8..08f0f433415b7 100644 --- a/http_check/pyproject.toml +++ b/http_check/pyproject.toml @@ -36,7 +36,7 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "cryptography==44.0.1", + "cryptography==43.0.1", "requests-ntlm==1.3.0", ] diff --git a/kubevirt_api/pyproject.toml b/kubevirt_api/pyproject.toml index c73f9aa06158b..bc635fb1445be 100644 --- a/kubevirt_api/pyproject.toml +++ b/kubevirt_api/pyproject.toml @@ -37,7 +37,7 @@ dynamic = [ [project.optional-dependencies] deps = [ - "kubernetes==32.0.1", + "kubernetes==32.0.0" ] [project.urls] diff --git a/mongo/pyproject.toml b/mongo/pyproject.toml index 1af550199fc36..3aff3ee913967 100644 --- a/mongo/pyproject.toml +++ b/mongo/pyproject.toml @@ -37,7 +37,7 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "cachetools==5.5.2", + "cachetools==5.5.1", "psutil==6.0.0", "pymongo[srv]==4.8.0; python_version >= '3.9'", ] diff --git a/mysql/pyproject.toml b/mysql/pyproject.toml index c06f27ebc846b..aa918877fde29 100644 --- a/mysql/pyproject.toml +++ b/mysql/pyproject.toml @@ -36,8 +36,8 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "cachetools==5.5.2", - "cryptography==44.0.1", + "cachetools==5.5.1", + "cryptography==43.0.1", "pymysql==1.1.1", ] diff --git a/postgres/pyproject.toml b/postgres/pyproject.toml index 10ed17b4147fc..55a0677de4fad 100644 --- a/postgres/pyproject.toml +++ b/postgres/pyproject.toml @@ -37,9 +37,9 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "azure-identity==1.20.0", - "boto3==1.36.26", - "cachetools==5.5.2", + "azure-identity==1.19.0", + "boto3==1.36.16", + "cachetools==5.5.1", "psycopg2-binary==2.9.9", "semver==3.0.4", ] diff --git a/riakcs/pyproject.toml b/riakcs/pyproject.toml index 1a76c39c37bd3..4dd0dd19de94e 100644 --- a/riakcs/pyproject.toml +++ b/riakcs/pyproject.toml @@ -36,7 +36,7 @@ dynamic = [ [project.optional-dependencies] deps = [ - "boto3==1.36.26", + "boto3==1.36.16", ] [project.urls] diff --git a/spark/pyproject.toml b/spark/pyproject.toml index f783611e2fb0d..64fcac372fca6 100644 --- a/spark/pyproject.toml +++ b/spark/pyproject.toml @@ -36,7 +36,7 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "beautifulsoup4==4.13.3", + "beautifulsoup4==4.12.3", ] [project.urls] diff --git a/sqlserver/pyproject.toml b/sqlserver/pyproject.toml index ef0167420c677..febc8dc93cf5d 100644 --- a/sqlserver/pyproject.toml +++ b/sqlserver/pyproject.toml @@ -37,7 +37,7 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "azure-identity==1.20.0", + "azure-identity==1.19.0", "lxml==5.1.1", "pyodbc==5.2.0; sys_platform != 'darwin' or platform_machine != 'arm64'", "pywin32==308; sys_platform == 'win32'", diff --git a/tls/pyproject.toml b/tls/pyproject.toml index 751800402bc21..f04ab67f1349c 100644 --- a/tls/pyproject.toml +++ b/tls/pyproject.toml @@ -36,7 +36,7 @@ license = "BSD-3-Clause" [project.optional-dependencies] deps = [ - "cryptography==44.0.1", + "cryptography==43.0.1", "service-identity[idna]==24.2.0", ] From 3d6f87e2d2d846cd60307356b60b080cf0929e02 Mon Sep 17 00:00:00 2001 From: Alex Lopez Date: Thu, 20 Mar 2025 17:16:54 +0100 Subject: [PATCH 4/7] Fix Workflow Dispatch for build deps workflow (#19889) * Print debugging to figure out variable values on workflow dispatches * Revert "Print debugging to figure out variable values on workflow dispatches" This reverts commit f8e098586bc7fa63455698148ce992c19d02cabe. * Fix workflow dispatch by using github.ref_name instead of github.ref --- .github/workflows/build-deps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-deps.yml b/.github/workflows/build-deps.yml index d7c7d8cb51710..f4f5efa3ed3ef 100644 --- a/.github/workflows/build-deps.yml +++ b/.github/workflows/build-deps.yml @@ -237,7 +237,7 @@ jobs: publish: name: Publish artifacts - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && (github.ref == github.event.repository.default_branch || startsWith(github.ref, '7.'))) + if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && (github.ref_name == github.event.repository.default_branch || startsWith(github.ref_name, '7.'))) needs: - build - build-macos From e41d5442e4b066753e928f6dc4c9f3362d7d9950 Mon Sep 17 00:00:00 2001 From: Ilia Kurenkov Date: Wed, 26 Mar 2025 10:41:12 +0100 Subject: [PATCH 5/7] rename --- .github/workflows/{build-deps.yml => resolve-build-deps.yaml} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{build-deps.yml => resolve-build-deps.yaml} (99%) diff --git a/.github/workflows/build-deps.yml b/.github/workflows/resolve-build-deps.yaml similarity index 99% rename from .github/workflows/build-deps.yml rename to .github/workflows/resolve-build-deps.yaml index f4f5efa3ed3ef..492ae956ddfc5 100644 --- a/.github/workflows/build-deps.yml +++ b/.github/workflows/resolve-build-deps.yaml @@ -1,4 +1,4 @@ -name: Build dependencies +name: Resolve Dependencies and Build Wheels on: workflow_dispatch: @@ -236,7 +236,7 @@ jobs: path: output publish: - name: Publish artifacts + name: Publish artifacts and update lockfiles via PR if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && (github.ref_name == github.event.repository.default_branch || startsWith(github.ref_name, '7.'))) needs: - build From 8d2ff1cb601d2778c32f7084bd5dfc76fb10491a Mon Sep 17 00:00:00 2001 From: "agent-platform-auto-pr[bot]" <153269286+agent-platform-auto-pr[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 12:29:29 -0400 Subject: [PATCH 6/7] Update dependency resolution (#20067) Co-authored-by: Kyle-Neale --- .deps/image_digests.json | 6 +--- .deps/metadata.json | 2 +- .deps/resolved/linux-aarch64_3.12.txt | 36 +++++++++---------- .deps/resolved/linux-x86_64_3.12.txt | 48 +++++++++++++------------- .deps/resolved/macos-x86_64_3.12.txt | 40 ++++++++++----------- .deps/resolved/windows-x86_64_3.12.txt | 40 ++++++++++----------- 6 files changed, 84 insertions(+), 88 deletions(-) diff --git a/.deps/image_digests.json b/.deps/image_digests.json index 6ab409f8a9af8..0967ef424bce6 100644 --- a/.deps/image_digests.json +++ b/.deps/image_digests.json @@ -1,5 +1 @@ -{ - "linux-aarch64": "sha256:1a4a3ea10f1c2cafb3dc1fd9eda02826026e0e660f670f9c065b6b0782f4d901", - "linux-x86_64": "sha256:00483449e9a400fc6e5a8433cb063f0946e20e1feda5f70b910d1bd451b63936", - "windows-x86_64": "sha256:9f34e9b4e33bb55f8e25ef12d7ec6e7e9f6916691a0b849bb1ebfb65e153f2d9" -} +{} diff --git a/.deps/metadata.json b/.deps/metadata.json index 9ffa069d1fdaf..677e381c15e66 100644 --- a/.deps/metadata.json +++ b/.deps/metadata.json @@ -1,3 +1,3 @@ { - "sha256": "31b12fc41197bf7276278e2eff6b288ff53f922e96277aa9b8dfff37f272beea" + "sha256": "98dc19dad7c8e401411254fe89f23f0119229419d09af3ed0b54093a0370837b" } diff --git a/.deps/resolved/linux-aarch64_3.12.txt b/.deps/resolved/linux-aarch64_3.12.txt index 22a5f2952fd31..8879d702e2036 100644 --- a/.deps/resolved/linux-aarch64_3.12.txt +++ b/.deps/resolved/linux-aarch64_3.12.txt @@ -3,16 +3,16 @@ annotated-types @ https://agent-int-packages.datadoghq.com/external/annotated-ty asn1crypto @ https://agent-int-packages.datadoghq.com/external/asn1crypto/asn1crypto-1.5.1-py2.py3-none-any.whl#sha256=db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 attrs @ https://agent-int-packages.datadoghq.com/external/attrs/attrs-25.3.0-py3-none-any.whl#sha256=427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3 aws-requests-auth @ https://agent-int-packages.datadoghq.com/external/aws-requests-auth/aws_requests_auth-0.4.3-py2.py3-none-any.whl#sha256=646bc37d62140ea1c709d20148f5d43197e6bd2d63909eb36fa4bb2345759977 -azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.32.0-py3-none-any.whl#sha256=eac191a0efb23bfa83fddf321b27b122b4ec847befa3091fa736a5c32c50d7b4 -azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.20.0-py3-none-any.whl#sha256=5f23fc4889a66330e840bd78830287e14f3761820fe3c5f77ac875edcb9ec998 +azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.33.0-py3-none-any.whl#sha256=9b5b6d0223a1d38c37500e6971118c1e0f13f54951e6893968b38910bc9cda8f +azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.19.0-py3-none-any.whl#sha256=e3f6558c181692d7509f09de10cca527c7dce426776454fb97df512a46527e81 bcrypt @ https://agent-int-packages.datadoghq.com/external/bcrypt/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24 -beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.13.3-py3-none-any.whl#sha256=99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16 +beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.12.3-py3-none-any.whl#sha256=b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed binary @ https://agent-int-packages.datadoghq.com/external/binary/binary-1.0.1-py3-none-any.whl#sha256=e92086be2a7204dbbdf86b55d86bd27bf4c24089db866113a90811b492241544 -boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.26-py3-none-any.whl#sha256=f67d014a7c5a3cd540606d64d7cb9eec3600cf42acab1ac0518df9751ae115e2 -botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.26-py3-none-any.whl#sha256=4e3f19913887a58502e71ef8d696fe7eaa54de7813ff73390cd5883f837dfa6e +boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.16-py3-none-any.whl#sha256=b10583bf8bd35be1b4027ee7e26b7cdf2078c79eab18357fd602cecb6d39400b +botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.16-py3-none-any.whl#sha256=aca0348ccd730332082489b6817fdf89e1526049adcf6e9c8c11c96dd9f42c03 bytecode @ https://agent-int-packages.datadoghq.com/external/bytecode/bytecode-0.16.1-py3-none-any.whl#sha256=1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35 -cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.2-py3-none-any.whl#sha256=d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a -cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.2-py3-none-any.whl#sha256=67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0 +cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.1-py3-none-any.whl#sha256=b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb +cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.3-py3-none-any.whl#sha256=adf957dddd26840f27ffbd060a6c4dd3b2192c5b7c2c0525ef1bd8131d8a83f5 certifi @ https://agent-int-packages.datadoghq.com/external/certifi/certifi-2025.1.31-py3-none-any.whl#sha256=ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe cffi @ https://agent-int-packages.datadoghq.com/external/cffi/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5 charset-normalizer @ https://agent-int-packages.datadoghq.com/external/charset-normalizer/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 @@ -20,7 +20,7 @@ clickhouse-cityhash @ https://agent-int-packages.datadoghq.com/external/clickhou clickhouse-driver @ https://agent-int-packages.datadoghq.com/external/clickhouse-driver/clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=4a8d8e2888a857d8db3d98765a5ad23ab561241feaef68bbffc5a0bd9c142342 cm-client @ https://agent-int-packages.datadoghq.com/built/cm-client/cm_client-45.0.4-20250218143931-py3-none-manylinux2014_aarch64.whl#sha256=72f55306e2e3df9291ee55e3a6b2f6698fe3999db9570a14da0ea56bbf51e5a9 confluent-kafka @ https://agent-int-packages.datadoghq.com/built/confluent-kafka/confluent_kafka-2.8.0-20250314140928-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=64c4f6e79ffa3376eee6735cfd464aec7fbcd3a575173a093c7c600d48496866 -cryptography @ https://agent-int-packages.datadoghq.com/built/cryptography/cryptography-44.0.1-20250317194053-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=a86431cb9ad1287e6c8b4ff5252b40a44580c305e872e266e62e0144867d9f10 +cryptography @ https://agent-int-packages.datadoghq.com/built/cryptography/cryptography-43.0.1-20250411161730-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=5c5af9aa6bd220c8430a0437228ab9e581194cd1d27aa793dec5eca58006afd6 ddsketch @ https://agent-int-packages.datadoghq.com/external/ddsketch/ddsketch-3.0.1-py3-none-any.whl#sha256=6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e ddtrace @ https://agent-int-packages.datadoghq.com/external/ddtrace/ddtrace-2.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=081bb12a54c46c9804e0645320d827deaff626b9035ba13ac97567149e07cdb5 decorator @ https://agent-int-packages.datadoghq.com/external/decorator/decorator-5.2.1-py3-none-any.whl#sha256=d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a @@ -44,7 +44,7 @@ jsonpatch @ https://agent-int-packages.datadoghq.com/external/jsonpatch/jsonpatc jsonpointer @ https://agent-int-packages.datadoghq.com/external/jsonpointer/jsonpointer-3.0.0-py2.py3-none-any.whl#sha256=13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 keystoneauth1 @ https://agent-int-packages.datadoghq.com/external/keystoneauth1/keystoneauth1-5.10.0-py3-none-any.whl#sha256=fd634febb02708d7ab520495168009f1e119cbda96d3478e66a7d9b5b0146f5d krb5 @ https://agent-int-packages.datadoghq.com/built/krb5/krb5-0.7.1-20250312153151-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl#sha256=e4732dabc5d3cee5fbf9c3710637cac8b06a826a66fcb2319b698d26554049d9 -kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.1-py2.py3-none-any.whl#sha256=35282ab8493b938b08ab5526c7ce66588232df00ef5e1dbe88a419107dc10998 +kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.0-py2.py3-none-any.whl#sha256=60fd8c29e8e43d9c553ca4811895a687426717deba9c0a66fb2dcc3f5ef96692 lazy-loader @ https://agent-int-packages.datadoghq.com/external/lazy-loader/lazy_loader-0.4-py3-none-any.whl#sha256=342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc ldap3 @ https://agent-int-packages.datadoghq.com/external/ldap3/ldap3-2.9.1-py2.py3-none-any.whl#sha256=5869596fc4948797020d3f03b7939da938778a0f9e2009f7a072ccf92b8e8d70 looseversion @ https://agent-int-packages.datadoghq.com/external/looseversion/looseversion-1.3.0-py2.py3-none-any.whl#sha256=781ef477b45946fc03dd4c84ea87734b21137ecda0e1e122bcb3c8d16d2a56e0 @@ -55,14 +55,14 @@ msal @ https://agent-int-packages.datadoghq.com/external/msal/msal-1.32.0-py3-no msal-extensions @ https://agent-int-packages.datadoghq.com/external/msal-extensions/msal_extensions-1.3.1-py3-none-any.whl#sha256=96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca oauthlib @ https://agent-int-packages.datadoghq.com/external/oauthlib/oauthlib-3.2.2-py3-none-any.whl#sha256=8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca openstacksdk @ https://agent-int-packages.datadoghq.com/external/openstacksdk/openstacksdk-4.3.0-py3-none-any.whl#sha256=157b2731b5e3b76db803be3e6ee511815a77d83e7d34da0acbf2248114bdc3be -opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.31.0-py3-none-any.whl#sha256=145b72c6c16977c005c568ec32f4946054ab793d8474a17fd884b0397582c5f2 +opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.32.0-py3-none-any.whl#sha256=15df743c765078611f376037b0d9111ec5c1febf2ec9440cdd919370faa1ce55 orjson @ https://agent-int-packages.datadoghq.com/external/orjson/orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d os-service-types @ https://agent-int-packages.datadoghq.com/external/os-service-types/os_service_types-1.7.0-py2.py3-none-any.whl#sha256=0505c72205690910077fb72b88f2a1f07533c8d39f2fe75b29583481764965d6 packaging @ https://agent-int-packages.datadoghq.com/external/packaging/packaging-24.2-py3-none-any.whl#sha256=09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 paramiko @ https://agent-int-packages.datadoghq.com/external/paramiko/paramiko-3.5.1-py3-none-any.whl#sha256=43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61 pathspec @ https://agent-int-packages.datadoghq.com/external/pathspec/pathspec-0.12.1-py3-none-any.whl#sha256=a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 pbr @ https://agent-int-packages.datadoghq.com/external/pbr/pbr-6.1.1-py2.py3-none-any.whl#sha256=38d4daea5d9fa63b3f626131b9d34947fd0c8be9b05a29276870580050a25a76 -platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.6-py3-none-any.whl#sha256=73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb +platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.7-py3-none-any.whl#sha256=a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94 ply @ https://agent-int-packages.datadoghq.com/external/ply/ply-3.11-py2.py3-none-any.whl#sha256=096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce prometheus-client @ https://agent-int-packages.datadoghq.com/external/prometheus-client/prometheus_client-0.21.1-py3-none-any.whl#sha256=594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301 protobuf @ https://agent-int-packages.datadoghq.com/external/protobuf/protobuf-5.29.3-cp38-abi3-manylinux2014_aarch64.whl#sha256=daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84 @@ -80,7 +80,7 @@ pymongo @ https://agent-int-packages.datadoghq.com/external/pymongo/pymongo-4.8. pymysql @ https://agent-int-packages.datadoghq.com/external/pymysql/PyMySQL-1.1.1-py3-none-any.whl#sha256=4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c pynacl @ https://agent-int-packages.datadoghq.com/external/pynacl/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 pyodbc @ https://agent-int-packages.datadoghq.com/built/pyodbc/pyodbc-5.2.0-20250314140930-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=9a533fc00a87fe664d05be6a35c8407d1043a6e6238ccb95c6a2af9f0d97b854 -pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.3.0-py3-none-any.whl#sha256=e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a +pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.2.1-py3-none-any.whl#sha256=967d5719b12b243588573f39b0c677637145c7a1ffedcd495a487e58177fbb8d pysmi @ https://agent-int-packages.datadoghq.com/external/pysmi/pysmi-1.2.1-py3-none-any.whl#sha256=d97c60de9f81d33ab2899124d95a94fa7fefacc86ab6e00cbfec543a073e6d33 pysnmp @ https://agent-int-packages.datadoghq.com/external/pysnmp/pysnmp-5.1.0-py3-none-any.whl#sha256=375a8adfc6820faf24ace6761a6d20544e60580d714ff7266df272850c39b439 pysnmp-mibs @ https://agent-int-packages.datadoghq.com/external/pysnmp-mibs/pysnmp_mibs-0.1.6-py2.py3-none-any.whl#sha256=5e153ebe8e767c07940cea435f866c623ff6b2376155c7da75085b08d3774d48 @@ -90,7 +90,7 @@ pyspnego @ https://agent-int-packages.datadoghq.com/external/pyspnego/pyspnego-0 python-binary-memcached @ https://agent-int-packages.datadoghq.com/external/python-binary-memcached/python_binary_memcached-0.31.4-py3-none-any.whl#sha256=f7a74f212567e37520dd550f0d088b99bb4bae01034d3078135bfc16285960f9 python-dateutil @ https://agent-int-packages.datadoghq.com/external/python-dateutil/python_dateutil-2.9.0.post0-py2.py3-none-any.whl#sha256=a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 python3-gearman @ https://agent-int-packages.datadoghq.com/external/python3-gearman/python3_gearman-0.1.0-py3-none-any.whl#sha256=4a5808d3a0bfc6c243548ad57e7aab4bee62c9cba2b1c3a860fdd292d46a112d -pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.1-py2.py3-none-any.whl#sha256=89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57 +pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.2-py2.py3-none-any.whl#sha256=5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00 pyvmomi @ https://agent-int-packages.datadoghq.com/built/pyvmomi/pyvmomi-8.0.3.0.1-20250218143933-py2.py3-none-manylinux2014_aarch64.whl#sha256=0d5c361674512c65adbdc32e05eaffb60be72b246efb3ea1ce2edb10dd6698c8 pyyaml @ https://agent-int-packages.datadoghq.com/external/pyyaml/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 redis @ https://agent-int-packages.datadoghq.com/external/redis/redis-5.2.1-py3-none-any.whl#sha256=ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4 @@ -107,8 +107,8 @@ s3transfer @ https://agent-int-packages.datadoghq.com/external/s3transfer/s3tran securesystemslib @ https://agent-int-packages.datadoghq.com/external/securesystemslib/securesystemslib-0.28.0-py3-none-any.whl#sha256=9e6b9abe36a511d4f52c759069db8f6f650362ba82d6efc7bc7466a458b3f499 semver @ https://agent-int-packages.datadoghq.com/external/semver/semver-3.0.4-py3-none-any.whl#sha256=9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746 service-identity @ https://agent-int-packages.datadoghq.com/external/service-identity/service_identity-24.2.0-py3-none-any.whl#sha256=6b047fbd8a84fd0bb0d55ebce4031e400562b9196e1e0d3e0fe2b8a59f6d4a85 -setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-76.0.0-py3-none-any.whl#sha256=199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6 -simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=000602141d0bddfcff60ea6a6e97d5e10c9db6b17fd2d6c66199fa481b6214bb +setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-78.1.0-py3-none-any.whl#sha256=3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8 +simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.19.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=d0b0efc7279d768db7c74d3d07f0b5c81280d16ae3fb14e9081dc903e8360771 six @ https://agent-int-packages.datadoghq.com/external/six/six-1.17.0-py2.py3-none-any.whl#sha256=4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 snowflake-connector-python @ https://agent-int-packages.datadoghq.com/external/snowflake-connector-python/snowflake_connector_python-3.13.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=fd95811b8378d8a268038b59ea8dba8d30dd0b96a1c323191805ae152224ff70 sortedcontainers @ https://agent-int-packages.datadoghq.com/external/sortedcontainers/sortedcontainers-2.4.0-py2.py3-none-any.whl#sha256=a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 @@ -117,10 +117,10 @@ stevedore @ https://agent-int-packages.datadoghq.com/external/stevedore/stevedor supervisor @ https://agent-int-packages.datadoghq.com/external/supervisor/supervisor-4.2.5-py2.py3-none-any.whl#sha256=2ecaede32fc25af814696374b79e42644ecaba5c09494c51016ffda9602d0f08 tomlkit @ https://agent-int-packages.datadoghq.com/external/tomlkit/tomlkit-0.13.2-py3-none-any.whl#sha256=7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde tuf @ https://agent-int-packages.datadoghq.com/external/tuf/tuf-4.0.0-py3-none-any.whl#sha256=a22ab5fa6daf910b3052929fdce42ccad8a300e5e85715daaff9592aed980f7a -typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.12.2-py3-none-any.whl#sha256=04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d +typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.13.2-py3-none-any.whl#sha256=a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c tzlocal @ https://agent-int-packages.datadoghq.com/external/tzlocal/tzlocal-5.3.1-py3-none-any.whl#sha256=eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d -uhashring @ https://agent-int-packages.datadoghq.com/external/uhashring/uhashring-2.3-py3-none-any.whl#sha256=7ee8a25ca495a97effad10bd563c83b4054a6d7606d9530757049a04edab9297 -urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.3.0-py3-none-any.whl#sha256=1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df +uhashring @ https://agent-int-packages.datadoghq.com/external/uhashring/uhashring-2.4-py3-none-any.whl#sha256=0d6cae4ac3205ef039860b0befd6bc762f1686a276805bf1b998c8657124df62 +urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.4.0-py3-none-any.whl#sha256=4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813 vertica-python @ https://agent-int-packages.datadoghq.com/external/vertica-python/vertica_python-1.4.0-py3-none-any.whl#sha256=50fecd7687f4b0b9f6dee6e2b35c195af2a4f702ece01bd12e080b51756e000b websocket-client @ https://agent-int-packages.datadoghq.com/external/websocket-client/websocket_client-1.8.0-py3-none-any.whl#sha256=17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 wrapt @ https://agent-int-packages.datadoghq.com/external/wrapt/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d diff --git a/.deps/resolved/linux-x86_64_3.12.txt b/.deps/resolved/linux-x86_64_3.12.txt index e3b24bd0e919a..c34775684a7cb 100644 --- a/.deps/resolved/linux-x86_64_3.12.txt +++ b/.deps/resolved/linux-x86_64_3.12.txt @@ -1,26 +1,26 @@ -aerospike @ https://agent-int-packages.datadoghq.com/built/aerospike/aerospike-7.1.1-20250311115040-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=b952f9e5aab1ab852f22d81c9b2510cf409a45bf60c09f180c72a9210b8d3c84 +aerospike @ https://agent-int-packages.datadoghq.com/built/aerospike/aerospike-7.1.1-20250411161719-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=d5c6ae9612ea5259d17b631c7dd72ba84f67a1f73f17fe5906711cf71a1e3ee4 annotated-types @ https://agent-int-packages.datadoghq.com/external/annotated-types/annotated_types-0.7.0-py3-none-any.whl#sha256=1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 asn1crypto @ https://agent-int-packages.datadoghq.com/external/asn1crypto/asn1crypto-1.5.1-py2.py3-none-any.whl#sha256=db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 attrs @ https://agent-int-packages.datadoghq.com/external/attrs/attrs-25.3.0-py3-none-any.whl#sha256=427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3 aws-requests-auth @ https://agent-int-packages.datadoghq.com/external/aws-requests-auth/aws_requests_auth-0.4.3-py2.py3-none-any.whl#sha256=646bc37d62140ea1c709d20148f5d43197e6bd2d63909eb36fa4bb2345759977 -azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.32.0-py3-none-any.whl#sha256=eac191a0efb23bfa83fddf321b27b122b4ec847befa3091fa736a5c32c50d7b4 -azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.20.0-py3-none-any.whl#sha256=5f23fc4889a66330e840bd78830287e14f3761820fe3c5f77ac875edcb9ec998 +azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.33.0-py3-none-any.whl#sha256=9b5b6d0223a1d38c37500e6971118c1e0f13f54951e6893968b38910bc9cda8f +azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.19.0-py3-none-any.whl#sha256=e3f6558c181692d7509f09de10cca527c7dce426776454fb97df512a46527e81 bcrypt @ https://agent-int-packages.datadoghq.com/external/bcrypt/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef -beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.13.3-py3-none-any.whl#sha256=99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16 +beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.12.3-py3-none-any.whl#sha256=b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed binary @ https://agent-int-packages.datadoghq.com/external/binary/binary-1.0.1-py3-none-any.whl#sha256=e92086be2a7204dbbdf86b55d86bd27bf4c24089db866113a90811b492241544 -boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.26-py3-none-any.whl#sha256=f67d014a7c5a3cd540606d64d7cb9eec3600cf42acab1ac0518df9751ae115e2 -botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.26-py3-none-any.whl#sha256=4e3f19913887a58502e71ef8d696fe7eaa54de7813ff73390cd5883f837dfa6e +boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.16-py3-none-any.whl#sha256=b10583bf8bd35be1b4027ee7e26b7cdf2078c79eab18357fd602cecb6d39400b +botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.16-py3-none-any.whl#sha256=aca0348ccd730332082489b6817fdf89e1526049adcf6e9c8c11c96dd9f42c03 bytecode @ https://agent-int-packages.datadoghq.com/external/bytecode/bytecode-0.16.1-py3-none-any.whl#sha256=1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35 -cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.2-py3-none-any.whl#sha256=d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a -cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.2-py3-none-any.whl#sha256=67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0 +cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.1-py3-none-any.whl#sha256=b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb +cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.3-py3-none-any.whl#sha256=adf957dddd26840f27ffbd060a6c4dd3b2192c5b7c2c0525ef1bd8131d8a83f5 certifi @ https://agent-int-packages.datadoghq.com/external/certifi/certifi-2025.1.31-py3-none-any.whl#sha256=ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe cffi @ https://agent-int-packages.datadoghq.com/external/cffi/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93 charset-normalizer @ https://agent-int-packages.datadoghq.com/external/charset-normalizer/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d clickhouse-cityhash @ https://agent-int-packages.datadoghq.com/external/clickhouse-cityhash/clickhouse_cityhash-1.0.2.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=f1f8fec4027cd648f72009ef59c9b76c5a27a33ca166b4e79e46542009429813 clickhouse-driver @ https://agent-int-packages.datadoghq.com/external/clickhouse-driver/clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=6dbcee870c60d9835e5dce1456ab6b9d807e6669246357f4b321ef747b90fa43 cm-client @ https://agent-int-packages.datadoghq.com/built/cm-client/cm_client-45.0.4-20250218143942-py3-none-manylinux2014_x86_64.whl#sha256=72f55306e2e3df9291ee55e3a6b2f6698fe3999db9570a14da0ea56bbf51e5a9 -confluent-kafka @ https://agent-int-packages.datadoghq.com/built/confluent-kafka/confluent_kafka-2.8.0-20250314140919-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=4270e85d58852e750cbba6004e4acc41951c97bb22bfaceb09710ecff0651698 -cryptography @ https://agent-int-packages.datadoghq.com/built/cryptography/cryptography-44.0.1-20250317194049-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=5d08816f0f6d864244143ed91a3c3af9c9093107220c508884eee00d088da939 +confluent-kafka @ https://agent-int-packages.datadoghq.com/built/confluent-kafka/confluent_kafka-2.8.0-20250411161719-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=9f02b8b5ea4398e2428324632b1eed6a7bb79651e4d349406d541ab39c59900c +cryptography @ https://agent-int-packages.datadoghq.com/built/cryptography/cryptography-43.0.1-20250411161720-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=257f65ff8876fb6645dcf2e7d8921fe51df4e5097a0a28337ff90dc24e02269d ddsketch @ https://agent-int-packages.datadoghq.com/external/ddsketch/ddsketch-3.0.1-py3-none-any.whl#sha256=6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e ddtrace @ https://agent-int-packages.datadoghq.com/external/ddtrace/ddtrace-2.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=5fc70ac472093093d9908965d95d977206372a3ddc8a2562acf9dfd57c6864d8 decorator @ https://agent-int-packages.datadoghq.com/external/decorator/decorator-5.2.1-py3-none-any.whl#sha256=d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a @@ -32,7 +32,7 @@ envier @ https://agent-int-packages.datadoghq.com/external/envier/envier-0.6.1-p filelock @ https://agent-int-packages.datadoghq.com/external/filelock/filelock-3.18.0-py3-none-any.whl#sha256=c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de foundationdb @ https://agent-int-packages.datadoghq.com/built/foundationdb/foundationdb-6.3.24-20250218143943-py3-none-manylinux2014_x86_64.whl#sha256=224873f8472b825a2fb7aba2e8ecf7893303101f7536ec1b96ff7a42ff63d8e1 google-auth @ https://agent-int-packages.datadoghq.com/external/google-auth/google_auth-2.38.0-py2.py3-none-any.whl#sha256=e7dae6694313f434a2727bf2906f27ad259bae090d7aa896590d86feec3d9d4a -gssapi @ https://agent-int-packages.datadoghq.com/built/gssapi/gssapi-1.9.0-20250311115042-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=b5805407a20acde1e63541fcc3857aad3548533070d1970357f6b991af6cf6cc +gssapi @ https://agent-int-packages.datadoghq.com/built/gssapi/gssapi-1.9.0-20250411161721-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=a91e03521ebcaf8b20a2057ea93298baa428f5a57a0b1c175a7275d80b0efb80 hazelcast-python-client @ https://agent-int-packages.datadoghq.com/external/hazelcast-python-client/hazelcast_python_client-5.5.0-py3-none-any.whl#sha256=c797c23c219971d225f8590f6359692c14059c26baa15c2762c95667ae38b90a idna @ https://agent-int-packages.datadoghq.com/external/idna/idna-3.10-py3-none-any.whl#sha256=946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 importlib-metadata @ https://agent-int-packages.datadoghq.com/external/importlib-metadata/importlib_metadata-8.6.1-py3-none-any.whl#sha256=02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e @@ -43,8 +43,8 @@ jmespath @ https://agent-int-packages.datadoghq.com/external/jmespath/jmespath-1 jsonpatch @ https://agent-int-packages.datadoghq.com/external/jsonpatch/jsonpatch-1.33-py2.py3-none-any.whl#sha256=0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade jsonpointer @ https://agent-int-packages.datadoghq.com/external/jsonpointer/jsonpointer-3.0.0-py2.py3-none-any.whl#sha256=13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 keystoneauth1 @ https://agent-int-packages.datadoghq.com/external/keystoneauth1/keystoneauth1-5.10.0-py3-none-any.whl#sha256=fd634febb02708d7ab520495168009f1e119cbda96d3478e66a7d9b5b0146f5d -krb5 @ https://agent-int-packages.datadoghq.com/built/krb5/krb5-0.7.1-20250312153142-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=b2d91f9908dbd5d42c30a4af8d0169cf012bf41bcb74be08594c04ec55c08c56 -kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.1-py2.py3-none-any.whl#sha256=35282ab8493b938b08ab5526c7ce66588232df00ef5e1dbe88a419107dc10998 +krb5 @ https://agent-int-packages.datadoghq.com/built/krb5/krb5-0.7.1-20250411161721-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=b874dc63fc94f1763a73c0d5d4a94b05142fc5dc1560b8d733693e2bc51b2772 +kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.0-py2.py3-none-any.whl#sha256=60fd8c29e8e43d9c553ca4811895a687426717deba9c0a66fb2dcc3f5ef96692 lazy-loader @ https://agent-int-packages.datadoghq.com/external/lazy-loader/lazy_loader-0.4-py3-none-any.whl#sha256=342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc ldap3 @ https://agent-int-packages.datadoghq.com/external/ldap3/ldap3-2.9.1-py2.py3-none-any.whl#sha256=5869596fc4948797020d3f03b7939da938778a0f9e2009f7a072ccf92b8e8d70 looseversion @ https://agent-int-packages.datadoghq.com/external/looseversion/looseversion-1.3.0-py2.py3-none-any.whl#sha256=781ef477b45946fc03dd4c84ea87734b21137ecda0e1e122bcb3c8d16d2a56e0 @@ -55,14 +55,14 @@ msal @ https://agent-int-packages.datadoghq.com/external/msal/msal-1.32.0-py3-no msal-extensions @ https://agent-int-packages.datadoghq.com/external/msal-extensions/msal_extensions-1.3.1-py3-none-any.whl#sha256=96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca oauthlib @ https://agent-int-packages.datadoghq.com/external/oauthlib/oauthlib-3.2.2-py3-none-any.whl#sha256=8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca openstacksdk @ https://agent-int-packages.datadoghq.com/external/openstacksdk/openstacksdk-4.3.0-py3-none-any.whl#sha256=157b2731b5e3b76db803be3e6ee511815a77d83e7d34da0acbf2248114bdc3be -opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.31.0-py3-none-any.whl#sha256=145b72c6c16977c005c568ec32f4946054ab793d8474a17fd884b0397582c5f2 +opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.32.0-py3-none-any.whl#sha256=15df743c765078611f376037b0d9111ec5c1febf2ec9440cdd919370faa1ce55 orjson @ https://agent-int-packages.datadoghq.com/external/orjson/orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41 os-service-types @ https://agent-int-packages.datadoghq.com/external/os-service-types/os_service_types-1.7.0-py2.py3-none-any.whl#sha256=0505c72205690910077fb72b88f2a1f07533c8d39f2fe75b29583481764965d6 packaging @ https://agent-int-packages.datadoghq.com/external/packaging/packaging-24.2-py3-none-any.whl#sha256=09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 paramiko @ https://agent-int-packages.datadoghq.com/external/paramiko/paramiko-3.5.1-py3-none-any.whl#sha256=43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61 pathspec @ https://agent-int-packages.datadoghq.com/external/pathspec/pathspec-0.12.1-py3-none-any.whl#sha256=a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 pbr @ https://agent-int-packages.datadoghq.com/external/pbr/pbr-6.1.1-py2.py3-none-any.whl#sha256=38d4daea5d9fa63b3f626131b9d34947fd0c8be9b05a29276870580050a25a76 -platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.6-py3-none-any.whl#sha256=73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb +platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.7-py3-none-any.whl#sha256=a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94 ply @ https://agent-int-packages.datadoghq.com/external/ply/ply-3.11-py2.py3-none-any.whl#sha256=096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce prometheus-client @ https://agent-int-packages.datadoghq.com/external/prometheus-client/prometheus_client-0.21.1-py3-none-any.whl#sha256=594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301 protobuf @ https://agent-int-packages.datadoghq.com/external/protobuf/protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl#sha256=c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f @@ -77,11 +77,11 @@ pydantic @ https://agent-int-packages.datadoghq.com/external/pydantic/pydantic-2 pydantic-core @ https://agent-int-packages.datadoghq.com/external/pydantic-core/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2 pyjwt @ https://agent-int-packages.datadoghq.com/external/pyjwt/PyJWT-2.10.1-py3-none-any.whl#sha256=dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb pymongo @ https://agent-int-packages.datadoghq.com/external/pymongo/pymongo-4.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=940d456774b17814bac5ea7fc28188c7a1338d4a233efbb6ba01de957bded2e8 -pymqi @ https://agent-int-packages.datadoghq.com/built/pymqi/pymqi-1.12.11-20250311115044-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=9f3ca3aade4b98bc97511cb85c4586b4c76df2d720afcad9df37224eb978ee62 +pymqi @ https://agent-int-packages.datadoghq.com/built/pymqi/pymqi-1.12.11-20250411161722-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=c8ebde0c409549a58be3840fdc688bfd5fbd38594f53df8728e730993ff434ce pymysql @ https://agent-int-packages.datadoghq.com/external/pymysql/PyMySQL-1.1.1-py3-none-any.whl#sha256=4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c pynacl @ https://agent-int-packages.datadoghq.com/external/pynacl/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 -pyodbc @ https://agent-int-packages.datadoghq.com/built/pyodbc/pyodbc-5.2.0-20250314140921-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=cdeafc3dc0965574b61ed4d253cdc1f552bdde109dbca65db6f92311a8427d0e -pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.3.0-py3-none-any.whl#sha256=e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a +pyodbc @ https://agent-int-packages.datadoghq.com/built/pyodbc/pyodbc-5.2.0-20250411161722-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=07dc8a0c128e8ea8b79825da54959a6377d743f1ea0da0262768d3c4c22dd750 +pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.2.1-py3-none-any.whl#sha256=967d5719b12b243588573f39b0c677637145c7a1ffedcd495a487e58177fbb8d pysmi @ https://agent-int-packages.datadoghq.com/external/pysmi/pysmi-1.2.1-py3-none-any.whl#sha256=d97c60de9f81d33ab2899124d95a94fa7fefacc86ab6e00cbfec543a073e6d33 pysnmp @ https://agent-int-packages.datadoghq.com/external/pysnmp/pysnmp-5.1.0-py3-none-any.whl#sha256=375a8adfc6820faf24ace6761a6d20544e60580d714ff7266df272850c39b439 pysnmp-mibs @ https://agent-int-packages.datadoghq.com/external/pysnmp-mibs/pysnmp_mibs-0.1.6-py2.py3-none-any.whl#sha256=5e153ebe8e767c07940cea435f866c623ff6b2376155c7da75085b08d3774d48 @@ -91,7 +91,7 @@ pyspnego @ https://agent-int-packages.datadoghq.com/external/pyspnego/pyspnego-0 python-binary-memcached @ https://agent-int-packages.datadoghq.com/external/python-binary-memcached/python_binary_memcached-0.31.4-py3-none-any.whl#sha256=f7a74f212567e37520dd550f0d088b99bb4bae01034d3078135bfc16285960f9 python-dateutil @ https://agent-int-packages.datadoghq.com/external/python-dateutil/python_dateutil-2.9.0.post0-py2.py3-none-any.whl#sha256=a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 python3-gearman @ https://agent-int-packages.datadoghq.com/external/python3-gearman/python3_gearman-0.1.0-py3-none-any.whl#sha256=4a5808d3a0bfc6c243548ad57e7aab4bee62c9cba2b1c3a860fdd292d46a112d -pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.1-py2.py3-none-any.whl#sha256=89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57 +pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.2-py2.py3-none-any.whl#sha256=5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00 pyvmomi @ https://agent-int-packages.datadoghq.com/built/pyvmomi/pyvmomi-8.0.3.0.1-20250218143944-py2.py3-none-manylinux2014_x86_64.whl#sha256=0d5c361674512c65adbdc32e05eaffb60be72b246efb3ea1ce2edb10dd6698c8 pyyaml @ https://agent-int-packages.datadoghq.com/external/pyyaml/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 redis @ https://agent-int-packages.datadoghq.com/external/redis/redis-5.2.1-py3-none-any.whl#sha256=ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4 @@ -108,8 +108,8 @@ s3transfer @ https://agent-int-packages.datadoghq.com/external/s3transfer/s3tran securesystemslib @ https://agent-int-packages.datadoghq.com/external/securesystemslib/securesystemslib-0.28.0-py3-none-any.whl#sha256=9e6b9abe36a511d4f52c759069db8f6f650362ba82d6efc7bc7466a458b3f499 semver @ https://agent-int-packages.datadoghq.com/external/semver/semver-3.0.4-py3-none-any.whl#sha256=9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746 service-identity @ https://agent-int-packages.datadoghq.com/external/service-identity/service_identity-24.2.0-py3-none-any.whl#sha256=6b047fbd8a84fd0bb0d55ebce4031e400562b9196e1e0d3e0fe2b8a59f6d4a85 -setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-76.0.0-py3-none-any.whl#sha256=199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6 -simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49 +setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-78.1.0-py3-none-any.whl#sha256=3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8 +simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.19.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=7017329ca8d4dca94ad5e59f496e5fc77630aecfc39df381ffc1d37fb6b25832 six @ https://agent-int-packages.datadoghq.com/external/six/six-1.17.0-py2.py3-none-any.whl#sha256=4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 snowflake-connector-python @ https://agent-int-packages.datadoghq.com/external/snowflake-connector-python/snowflake_connector_python-3.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=1fe0cd6fab07fccdea020394a6175baa1ddf57b3d1f4dc288bd7eebcf29c6a0b sortedcontainers @ https://agent-int-packages.datadoghq.com/external/sortedcontainers/sortedcontainers-2.4.0-py2.py3-none-any.whl#sha256=a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 @@ -118,10 +118,10 @@ stevedore @ https://agent-int-packages.datadoghq.com/external/stevedore/stevedor supervisor @ https://agent-int-packages.datadoghq.com/external/supervisor/supervisor-4.2.5-py2.py3-none-any.whl#sha256=2ecaede32fc25af814696374b79e42644ecaba5c09494c51016ffda9602d0f08 tomlkit @ https://agent-int-packages.datadoghq.com/external/tomlkit/tomlkit-0.13.2-py3-none-any.whl#sha256=7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde tuf @ https://agent-int-packages.datadoghq.com/external/tuf/tuf-4.0.0-py3-none-any.whl#sha256=a22ab5fa6daf910b3052929fdce42ccad8a300e5e85715daaff9592aed980f7a -typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.12.2-py3-none-any.whl#sha256=04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d +typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.13.2-py3-none-any.whl#sha256=a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c tzlocal @ https://agent-int-packages.datadoghq.com/external/tzlocal/tzlocal-5.3.1-py3-none-any.whl#sha256=eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d -uhashring @ https://agent-int-packages.datadoghq.com/external/uhashring/uhashring-2.3-py3-none-any.whl#sha256=7ee8a25ca495a97effad10bd563c83b4054a6d7606d9530757049a04edab9297 -urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.3.0-py3-none-any.whl#sha256=1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df +uhashring @ https://agent-int-packages.datadoghq.com/external/uhashring/uhashring-2.4-py3-none-any.whl#sha256=0d6cae4ac3205ef039860b0befd6bc762f1686a276805bf1b998c8657124df62 +urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.4.0-py3-none-any.whl#sha256=4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813 vertica-python @ https://agent-int-packages.datadoghq.com/external/vertica-python/vertica_python-1.4.0-py3-none-any.whl#sha256=50fecd7687f4b0b9f6dee6e2b35c195af2a4f702ece01bd12e080b51756e000b websocket-client @ https://agent-int-packages.datadoghq.com/external/websocket-client/websocket_client-1.8.0-py3-none-any.whl#sha256=17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 wrapt @ https://agent-int-packages.datadoghq.com/external/wrapt/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98 diff --git a/.deps/resolved/macos-x86_64_3.12.txt b/.deps/resolved/macos-x86_64_3.12.txt index 4ea7b39d000df..0ebe42a7bac8b 100644 --- a/.deps/resolved/macos-x86_64_3.12.txt +++ b/.deps/resolved/macos-x86_64_3.12.txt @@ -2,24 +2,24 @@ annotated-types @ https://agent-int-packages.datadoghq.com/external/annotated-ty asn1crypto @ https://agent-int-packages.datadoghq.com/external/asn1crypto/asn1crypto-1.5.1-py2.py3-none-any.whl#sha256=db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 attrs @ https://agent-int-packages.datadoghq.com/external/attrs/attrs-25.3.0-py3-none-any.whl#sha256=427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3 aws-requests-auth @ https://agent-int-packages.datadoghq.com/external/aws-requests-auth/aws_requests_auth-0.4.3-py2.py3-none-any.whl#sha256=646bc37d62140ea1c709d20148f5d43197e6bd2d63909eb36fa4bb2345759977 -azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.32.0-py3-none-any.whl#sha256=eac191a0efb23bfa83fddf321b27b122b4ec847befa3091fa736a5c32c50d7b4 -azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.20.0-py3-none-any.whl#sha256=5f23fc4889a66330e840bd78830287e14f3761820fe3c5f77ac875edcb9ec998 +azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.33.0-py3-none-any.whl#sha256=9b5b6d0223a1d38c37500e6971118c1e0f13f54951e6893968b38910bc9cda8f +azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.19.0-py3-none-any.whl#sha256=e3f6558c181692d7509f09de10cca527c7dce426776454fb97df512a46527e81 bcrypt @ https://agent-int-packages.datadoghq.com/external/bcrypt/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl#sha256=0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3 -beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.13.3-py3-none-any.whl#sha256=99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16 +beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.12.3-py3-none-any.whl#sha256=b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed binary @ https://agent-int-packages.datadoghq.com/external/binary/binary-1.0.1-py3-none-any.whl#sha256=e92086be2a7204dbbdf86b55d86bd27bf4c24089db866113a90811b492241544 -boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.26-py3-none-any.whl#sha256=f67d014a7c5a3cd540606d64d7cb9eec3600cf42acab1ac0518df9751ae115e2 -botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.26-py3-none-any.whl#sha256=4e3f19913887a58502e71ef8d696fe7eaa54de7813ff73390cd5883f837dfa6e +boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.16-py3-none-any.whl#sha256=b10583bf8bd35be1b4027ee7e26b7cdf2078c79eab18357fd602cecb6d39400b +botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.16-py3-none-any.whl#sha256=aca0348ccd730332082489b6817fdf89e1526049adcf6e9c8c11c96dd9f42c03 bytecode @ https://agent-int-packages.datadoghq.com/external/bytecode/bytecode-0.16.1-py3-none-any.whl#sha256=1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35 -cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.2-py3-none-any.whl#sha256=d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a -cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.2-py3-none-any.whl#sha256=67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0 +cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.1-py3-none-any.whl#sha256=b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb +cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.3-py3-none-any.whl#sha256=adf957dddd26840f27ffbd060a6c4dd3b2192c5b7c2c0525ef1bd8131d8a83f5 certifi @ https://agent-int-packages.datadoghq.com/external/certifi/certifi-2025.1.31-py3-none-any.whl#sha256=ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe cffi @ https://agent-int-packages.datadoghq.com/external/cffi/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl#sha256=805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4 charset-normalizer @ https://agent-int-packages.datadoghq.com/external/charset-normalizer/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl#sha256=73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 clickhouse-cityhash @ https://agent-int-packages.datadoghq.com/external/clickhouse-cityhash/clickhouse_cityhash-1.0.2.4-cp312-cp312-macosx_10_9_x86_64.whl#sha256=261fc1b0bf349de66b2d9e3d367879a561b516ca8e54e85e0c27b7c1a4f639b4 clickhouse-driver @ https://agent-int-packages.datadoghq.com/external/clickhouse-driver/clickhouse_driver-0.2.9-cp312-cp312-macosx_10_9_x86_64.whl#sha256=fcb2fd00e58650ae206a6d5dbc83117240e622471aa5124733fbf2805eb8bda0 cm-client @ https://agent-int-packages.datadoghq.com/built/cm-client/cm_client-45.0.4-20241216144620-py3-none-macosx_10_12_universal2.whl#sha256=72f55306e2e3df9291ee55e3a6b2f6698fe3999db9570a14da0ea56bbf51e5a9 -confluent-kafka @ https://agent-int-packages.datadoghq.com/built/confluent-kafka/confluent_kafka-2.8.0-20250317194045-cp312-cp312-macosx_10_13_universal2.whl#sha256=a6686d4b3f132c23e710ec0851d10da684a3103e5c9e3e750d69087fe2354ae5 -cryptography @ https://agent-int-packages.datadoghq.com/external/cryptography/cryptography-44.0.1-cp39-abi3-macosx_10_9_universal2.whl#sha256=a2d8a7045e1ab9b9f803f0d9531ead85f90c5f2859e653b61497228b18452008 +confluent-kafka @ https://agent-int-packages.datadoghq.com/built/confluent-kafka/confluent_kafka-2.8.0-20250411161708-cp312-cp312-macosx_10_13_universal2.whl#sha256=f371b833bf77813d0cd4d6e61aab4868e970205eaa73cc78be8059612d68b4b1 +cryptography @ https://agent-int-packages.datadoghq.com/external/cryptography/cryptography-43.0.1-cp39-abi3-macosx_10_9_universal2.whl#sha256=ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d ddsketch @ https://agent-int-packages.datadoghq.com/external/ddsketch/ddsketch-3.0.1-py3-none-any.whl#sha256=6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e ddtrace @ https://agent-int-packages.datadoghq.com/external/ddtrace/ddtrace-2.10.6-cp312-cp312-macosx_12_0_x86_64.whl#sha256=401f77b0564c3f990b58b9f21055331ca9efcdfa06dfa6ccff13cf21f8329ba5 decorator @ https://agent-int-packages.datadoghq.com/external/decorator/decorator-5.2.1-py3-none-any.whl#sha256=d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a @@ -43,7 +43,7 @@ jsonpatch @ https://agent-int-packages.datadoghq.com/external/jsonpatch/jsonpatc jsonpointer @ https://agent-int-packages.datadoghq.com/external/jsonpointer/jsonpointer-3.0.0-py2.py3-none-any.whl#sha256=13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 keystoneauth1 @ https://agent-int-packages.datadoghq.com/external/keystoneauth1/keystoneauth1-5.10.0-py3-none-any.whl#sha256=fd634febb02708d7ab520495168009f1e119cbda96d3478e66a7d9b5b0146f5d krb5 @ https://agent-int-packages.datadoghq.com/external/krb5/krb5-0.7.1-cp312-cp312-macosx_10_13_x86_64.whl#sha256=a075da3721b188070d801814c58652d04d3f37ccbf399dee63251f5ff27d2987 -kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.1-py2.py3-none-any.whl#sha256=35282ab8493b938b08ab5526c7ce66588232df00ef5e1dbe88a419107dc10998 +kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.0-py2.py3-none-any.whl#sha256=60fd8c29e8e43d9c553ca4811895a687426717deba9c0a66fb2dcc3f5ef96692 lazy-loader @ https://agent-int-packages.datadoghq.com/external/lazy-loader/lazy_loader-0.4-py3-none-any.whl#sha256=342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc ldap3 @ https://agent-int-packages.datadoghq.com/external/ldap3/ldap3-2.9.1-py2.py3-none-any.whl#sha256=5869596fc4948797020d3f03b7939da938778a0f9e2009f7a072ccf92b8e8d70 looseversion @ https://agent-int-packages.datadoghq.com/external/looseversion/looseversion-1.3.0-py2.py3-none-any.whl#sha256=781ef477b45946fc03dd4c84ea87734b21137ecda0e1e122bcb3c8d16d2a56e0 @@ -54,14 +54,14 @@ msal @ https://agent-int-packages.datadoghq.com/external/msal/msal-1.32.0-py3-no msal-extensions @ https://agent-int-packages.datadoghq.com/external/msal-extensions/msal_extensions-1.3.1-py3-none-any.whl#sha256=96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca oauthlib @ https://agent-int-packages.datadoghq.com/external/oauthlib/oauthlib-3.2.2-py3-none-any.whl#sha256=8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca openstacksdk @ https://agent-int-packages.datadoghq.com/external/openstacksdk/openstacksdk-4.3.0-py3-none-any.whl#sha256=157b2731b5e3b76db803be3e6ee511815a77d83e7d34da0acbf2248114bdc3be -opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.31.0-py3-none-any.whl#sha256=145b72c6c16977c005c568ec32f4946054ab793d8474a17fd884b0397582c5f2 +opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.32.0-py3-none-any.whl#sha256=15df743c765078611f376037b0d9111ec5c1febf2ec9440cdd919370faa1ce55 orjson @ https://agent-int-packages.datadoghq.com/external/orjson/orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl#sha256=9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a os-service-types @ https://agent-int-packages.datadoghq.com/external/os-service-types/os_service_types-1.7.0-py2.py3-none-any.whl#sha256=0505c72205690910077fb72b88f2a1f07533c8d39f2fe75b29583481764965d6 packaging @ https://agent-int-packages.datadoghq.com/external/packaging/packaging-24.2-py3-none-any.whl#sha256=09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 paramiko @ https://agent-int-packages.datadoghq.com/external/paramiko/paramiko-3.5.1-py3-none-any.whl#sha256=43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61 pathspec @ https://agent-int-packages.datadoghq.com/external/pathspec/pathspec-0.12.1-py3-none-any.whl#sha256=a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 pbr @ https://agent-int-packages.datadoghq.com/external/pbr/pbr-6.1.1-py2.py3-none-any.whl#sha256=38d4daea5d9fa63b3f626131b9d34947fd0c8be9b05a29276870580050a25a76 -platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.6-py3-none-any.whl#sha256=73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb +platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.7-py3-none-any.whl#sha256=a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94 ply @ https://agent-int-packages.datadoghq.com/external/ply/ply-3.11-py2.py3-none-any.whl#sha256=096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce prometheus-client @ https://agent-int-packages.datadoghq.com/external/prometheus-client/prometheus_client-0.21.1-py3-none-any.whl#sha256=594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301 protobuf @ https://agent-int-packages.datadoghq.com/external/protobuf/protobuf-5.29.3-cp38-abi3-macosx_10_9_universal2.whl#sha256=a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e @@ -76,11 +76,11 @@ pydantic @ https://agent-int-packages.datadoghq.com/external/pydantic/pydantic-2 pydantic-core @ https://agent-int-packages.datadoghq.com/external/pydantic-core/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl#sha256=9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0 pyjwt @ https://agent-int-packages.datadoghq.com/external/pyjwt/PyJWT-2.10.1-py3-none-any.whl#sha256=dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb pymongo @ https://agent-int-packages.datadoghq.com/external/pymongo/pymongo-4.8.0-cp312-cp312-macosx_10_9_x86_64.whl#sha256=e6a720a3d22b54183352dc65f08cd1547204d263e0651b213a0a2e577e838526 -pymqi @ https://agent-int-packages.datadoghq.com/built/pymqi/pymqi-1.12.11-20250317194046-cp312-cp312-macosx_10_13_universal2.whl#sha256=eb4c7e86104fa61a4bba36c0236cb9560f2841991d5a526d846754942b2ca11a +pymqi @ https://agent-int-packages.datadoghq.com/built/pymqi/pymqi-1.12.11-20250411161709-cp312-cp312-macosx_10_13_universal2.whl#sha256=5d5ad175f97ffa8a5d4b328ee70ad07b1b218d4678e60ba47fdade725fab3a03 pymysql @ https://agent-int-packages.datadoghq.com/external/pymysql/PyMySQL-1.1.1-py3-none-any.whl#sha256=4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c pynacl @ https://agent-int-packages.datadoghq.com/external/pynacl/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl#sha256=401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1 pyodbc @ https://agent-int-packages.datadoghq.com/external/pyodbc/pyodbc-5.2.0-cp312-cp312-macosx_10_13_x86_64.whl#sha256=be43d1ece4f2cf4d430996689d89a1a15aeb3a8da8262527e5ced5aee27e89c3 -pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.3.0-py3-none-any.whl#sha256=e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a +pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.2.1-py3-none-any.whl#sha256=967d5719b12b243588573f39b0c677637145c7a1ffedcd495a487e58177fbb8d pysmi @ https://agent-int-packages.datadoghq.com/external/pysmi/pysmi-1.2.1-py3-none-any.whl#sha256=d97c60de9f81d33ab2899124d95a94fa7fefacc86ab6e00cbfec543a073e6d33 pysnmp @ https://agent-int-packages.datadoghq.com/external/pysnmp/pysnmp-5.1.0-py3-none-any.whl#sha256=375a8adfc6820faf24ace6761a6d20544e60580d714ff7266df272850c39b439 pysnmp-mibs @ https://agent-int-packages.datadoghq.com/external/pysnmp-mibs/pysnmp_mibs-0.1.6-py2.py3-none-any.whl#sha256=5e153ebe8e767c07940cea435f866c623ff6b2376155c7da75085b08d3774d48 @@ -90,7 +90,7 @@ pyspnego @ https://agent-int-packages.datadoghq.com/external/pyspnego/pyspnego-0 python-binary-memcached @ https://agent-int-packages.datadoghq.com/external/python-binary-memcached/python_binary_memcached-0.31.4-py3-none-any.whl#sha256=f7a74f212567e37520dd550f0d088b99bb4bae01034d3078135bfc16285960f9 python-dateutil @ https://agent-int-packages.datadoghq.com/external/python-dateutil/python_dateutil-2.9.0.post0-py2.py3-none-any.whl#sha256=a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 python3-gearman @ https://agent-int-packages.datadoghq.com/external/python3-gearman/python3_gearman-0.1.0-py3-none-any.whl#sha256=4a5808d3a0bfc6c243548ad57e7aab4bee62c9cba2b1c3a860fdd292d46a112d -pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.1-py2.py3-none-any.whl#sha256=89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57 +pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.2-py2.py3-none-any.whl#sha256=5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00 pyvmomi @ https://agent-int-packages.datadoghq.com/built/pyvmomi/pyvmomi-8.0.3.0.1-20241216144622-py2.py3-none-macosx_10_12_universal2.whl#sha256=0d5c361674512c65adbdc32e05eaffb60be72b246efb3ea1ce2edb10dd6698c8 pyyaml @ https://agent-int-packages.datadoghq.com/external/pyyaml/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl#sha256=c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab redis @ https://agent-int-packages.datadoghq.com/external/redis/redis-5.2.1-py3-none-any.whl#sha256=ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4 @@ -107,8 +107,8 @@ s3transfer @ https://agent-int-packages.datadoghq.com/external/s3transfer/s3tran securesystemslib @ https://agent-int-packages.datadoghq.com/external/securesystemslib/securesystemslib-0.28.0-py3-none-any.whl#sha256=9e6b9abe36a511d4f52c759069db8f6f650362ba82d6efc7bc7466a458b3f499 semver @ https://agent-int-packages.datadoghq.com/external/semver/semver-3.0.4-py3-none-any.whl#sha256=9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746 service-identity @ https://agent-int-packages.datadoghq.com/external/service-identity/service_identity-24.2.0-py3-none-any.whl#sha256=6b047fbd8a84fd0bb0d55ebce4031e400562b9196e1e0d3e0fe2b8a59f6d4a85 -setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-76.0.0-py3-none-any.whl#sha256=199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6 -simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl#sha256=884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6 +setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-78.1.0-py3-none-any.whl#sha256=3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8 +simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.19.3-cp312-cp312-macosx_10_9_x86_64.whl#sha256=6ef9383c5e05f445be60f1735c1816163c874c0b1ede8bb4390aff2ced34f333 six @ https://agent-int-packages.datadoghq.com/external/six/six-1.17.0-py2.py3-none-any.whl#sha256=4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 snowflake-connector-python @ https://agent-int-packages.datadoghq.com/external/snowflake-connector-python/snowflake_connector_python-3.13.2-cp312-cp312-macosx_11_0_x86_64.whl#sha256=38426293ecf6c1fc3dd87d506e55d8b82dcf763fab1c827b0d09bc74f9852c50 sortedcontainers @ https://agent-int-packages.datadoghq.com/external/sortedcontainers/sortedcontainers-2.4.0-py2.py3-none-any.whl#sha256=a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 @@ -117,10 +117,10 @@ stevedore @ https://agent-int-packages.datadoghq.com/external/stevedore/stevedor supervisor @ https://agent-int-packages.datadoghq.com/external/supervisor/supervisor-4.2.5-py2.py3-none-any.whl#sha256=2ecaede32fc25af814696374b79e42644ecaba5c09494c51016ffda9602d0f08 tomlkit @ https://agent-int-packages.datadoghq.com/external/tomlkit/tomlkit-0.13.2-py3-none-any.whl#sha256=7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde tuf @ https://agent-int-packages.datadoghq.com/external/tuf/tuf-4.0.0-py3-none-any.whl#sha256=a22ab5fa6daf910b3052929fdce42ccad8a300e5e85715daaff9592aed980f7a -typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.12.2-py3-none-any.whl#sha256=04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d +typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.13.2-py3-none-any.whl#sha256=a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c tzlocal @ https://agent-int-packages.datadoghq.com/external/tzlocal/tzlocal-5.3.1-py3-none-any.whl#sha256=eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d -uhashring @ https://agent-int-packages.datadoghq.com/external/uhashring/uhashring-2.3-py3-none-any.whl#sha256=7ee8a25ca495a97effad10bd563c83b4054a6d7606d9530757049a04edab9297 -urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.3.0-py3-none-any.whl#sha256=1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df +uhashring @ https://agent-int-packages.datadoghq.com/external/uhashring/uhashring-2.4-py3-none-any.whl#sha256=0d6cae4ac3205ef039860b0befd6bc762f1686a276805bf1b998c8657124df62 +urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.4.0-py3-none-any.whl#sha256=4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813 vertica-python @ https://agent-int-packages.datadoghq.com/external/vertica-python/vertica_python-1.4.0-py3-none-any.whl#sha256=50fecd7687f4b0b9f6dee6e2b35c195af2a4f702ece01bd12e080b51756e000b websocket-client @ https://agent-int-packages.datadoghq.com/external/websocket-client/websocket_client-1.8.0-py3-none-any.whl#sha256=17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 wrapt @ https://agent-int-packages.datadoghq.com/external/wrapt/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl#sha256=3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392 diff --git a/.deps/resolved/windows-x86_64_3.12.txt b/.deps/resolved/windows-x86_64_3.12.txt index fbf2257528d1a..340f1bc5b2492 100644 --- a/.deps/resolved/windows-x86_64_3.12.txt +++ b/.deps/resolved/windows-x86_64_3.12.txt @@ -2,24 +2,24 @@ annotated-types @ https://agent-int-packages.datadoghq.com/external/annotated-ty asn1crypto @ https://agent-int-packages.datadoghq.com/external/asn1crypto/asn1crypto-1.5.1-py2.py3-none-any.whl#sha256=db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 attrs @ https://agent-int-packages.datadoghq.com/external/attrs/attrs-25.3.0-py3-none-any.whl#sha256=427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3 aws-requests-auth @ https://agent-int-packages.datadoghq.com/external/aws-requests-auth/aws_requests_auth-0.4.3-py2.py3-none-any.whl#sha256=646bc37d62140ea1c709d20148f5d43197e6bd2d63909eb36fa4bb2345759977 -azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.32.0-py3-none-any.whl#sha256=eac191a0efb23bfa83fddf321b27b122b4ec847befa3091fa736a5c32c50d7b4 -azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.20.0-py3-none-any.whl#sha256=5f23fc4889a66330e840bd78830287e14f3761820fe3c5f77ac875edcb9ec998 +azure-core @ https://agent-int-packages.datadoghq.com/external/azure-core/azure_core-1.33.0-py3-none-any.whl#sha256=9b5b6d0223a1d38c37500e6971118c1e0f13f54951e6893968b38910bc9cda8f +azure-identity @ https://agent-int-packages.datadoghq.com/external/azure-identity/azure_identity-1.19.0-py3-none-any.whl#sha256=e3f6558c181692d7509f09de10cca527c7dce426776454fb97df512a46527e81 bcrypt @ https://agent-int-packages.datadoghq.com/external/bcrypt/bcrypt-4.3.0-cp39-abi3-win_amd64.whl#sha256=e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b -beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.13.3-py3-none-any.whl#sha256=99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16 +beautifulsoup4 @ https://agent-int-packages.datadoghq.com/external/beautifulsoup4/beautifulsoup4-4.12.3-py3-none-any.whl#sha256=b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed binary @ https://agent-int-packages.datadoghq.com/external/binary/binary-1.0.1-py3-none-any.whl#sha256=e92086be2a7204dbbdf86b55d86bd27bf4c24089db866113a90811b492241544 -boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.26-py3-none-any.whl#sha256=f67d014a7c5a3cd540606d64d7cb9eec3600cf42acab1ac0518df9751ae115e2 -botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.26-py3-none-any.whl#sha256=4e3f19913887a58502e71ef8d696fe7eaa54de7813ff73390cd5883f837dfa6e +boto3 @ https://agent-int-packages.datadoghq.com/external/boto3/boto3-1.36.16-py3-none-any.whl#sha256=b10583bf8bd35be1b4027ee7e26b7cdf2078c79eab18357fd602cecb6d39400b +botocore @ https://agent-int-packages.datadoghq.com/external/botocore/botocore-1.36.16-py3-none-any.whl#sha256=aca0348ccd730332082489b6817fdf89e1526049adcf6e9c8c11c96dd9f42c03 bytecode @ https://agent-int-packages.datadoghq.com/external/bytecode/bytecode-0.16.1-py3-none-any.whl#sha256=1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35 -cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.2-py3-none-any.whl#sha256=d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a -cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.2-py3-none-any.whl#sha256=67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0 +cachetools @ https://agent-int-packages.datadoghq.com/external/cachetools/cachetools-5.5.1-py3-none-any.whl#sha256=b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb +cattrs @ https://agent-int-packages.datadoghq.com/external/cattrs/cattrs-24.1.3-py3-none-any.whl#sha256=adf957dddd26840f27ffbd060a6c4dd3b2192c5b7c2c0525ef1bd8131d8a83f5 certifi @ https://agent-int-packages.datadoghq.com/external/certifi/certifi-2025.1.31-py3-none-any.whl#sha256=ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe cffi @ https://agent-int-packages.datadoghq.com/external/cffi/cffi-1.17.1-cp312-cp312-win_amd64.whl#sha256=51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903 charset-normalizer @ https://agent-int-packages.datadoghq.com/external/charset-normalizer/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl#sha256=6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f clickhouse-cityhash @ https://agent-int-packages.datadoghq.com/external/clickhouse-cityhash/clickhouse_cityhash-1.0.2.4-cp312-cp312-win_amd64.whl#sha256=0409917be29f5ad80a6772712fce954b5e81450555636e8523290ee9740a2dbb clickhouse-driver @ https://agent-int-packages.datadoghq.com/external/clickhouse-driver/clickhouse_driver-0.2.9-cp312-cp312-win_amd64.whl#sha256=de6624e28eeffd01668803d28ae89e3d4e359b1bff8b60e4933e1cb3c6f86f18 cm-client @ https://agent-int-packages.datadoghq.com/built/cm-client/cm_client-45.0.4-20250218143924-py3-none-win_amd64.whl#sha256=02165c52665dfa139b6606bd802b996c51bcbc8c89f3c79801833d53e838d735 -confluent-kafka @ https://agent-int-packages.datadoghq.com/built/confluent-kafka/confluent_kafka-2.8.0-20250317194057-cp312-cp312-win_amd64.whl#sha256=3364cc00a32dfac69e8938f2eebeaa51e424bb4501113adf734859544917d7c5 -cryptography @ https://agent-int-packages.datadoghq.com/external/cryptography/cryptography-44.0.1-cp39-abi3-win_amd64.whl#sha256=e403f7f766ded778ecdb790da786b418a9f2394f36e8cc8b796cc056ab05f44f +confluent-kafka @ https://agent-int-packages.datadoghq.com/built/confluent-kafka/confluent_kafka-2.8.0-20250411161738-cp312-cp312-win_amd64.whl#sha256=e8be732bad3efca3174518e19f50f9e389ff32c68c7c58644650f0ba1ec94469 +cryptography @ https://agent-int-packages.datadoghq.com/external/cryptography/cryptography-43.0.1-cp39-abi3-win_amd64.whl#sha256=d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb ddsketch @ https://agent-int-packages.datadoghq.com/external/ddsketch/ddsketch-3.0.1-py3-none-any.whl#sha256=6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e ddtrace @ https://agent-int-packages.datadoghq.com/external/ddtrace/ddtrace-2.10.6-cp312-cp312-win_amd64.whl#sha256=bb183a535e5b24828a45901babd9fd15a1350c9d5096de5ba463287d0c8c64d1 decorator @ https://agent-int-packages.datadoghq.com/external/decorator/decorator-5.2.1-py3-none-any.whl#sha256=d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a @@ -41,7 +41,7 @@ jmespath @ https://agent-int-packages.datadoghq.com/external/jmespath/jmespath-1 jsonpatch @ https://agent-int-packages.datadoghq.com/external/jsonpatch/jsonpatch-1.33-py2.py3-none-any.whl#sha256=0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade jsonpointer @ https://agent-int-packages.datadoghq.com/external/jsonpointer/jsonpointer-3.0.0-py2.py3-none-any.whl#sha256=13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 keystoneauth1 @ https://agent-int-packages.datadoghq.com/external/keystoneauth1/keystoneauth1-5.10.0-py3-none-any.whl#sha256=fd634febb02708d7ab520495168009f1e119cbda96d3478e66a7d9b5b0146f5d -kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.1-py2.py3-none-any.whl#sha256=35282ab8493b938b08ab5526c7ce66588232df00ef5e1dbe88a419107dc10998 +kubernetes @ https://agent-int-packages.datadoghq.com/external/kubernetes/kubernetes-32.0.0-py2.py3-none-any.whl#sha256=60fd8c29e8e43d9c553ca4811895a687426717deba9c0a66fb2dcc3f5ef96692 lazy-loader @ https://agent-int-packages.datadoghq.com/external/lazy-loader/lazy_loader-0.4-py3-none-any.whl#sha256=342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc ldap3 @ https://agent-int-packages.datadoghq.com/external/ldap3/ldap3-2.9.1-py2.py3-none-any.whl#sha256=5869596fc4948797020d3f03b7939da938778a0f9e2009f7a072ccf92b8e8d70 looseversion @ https://agent-int-packages.datadoghq.com/external/looseversion/looseversion-1.3.0-py2.py3-none-any.whl#sha256=781ef477b45946fc03dd4c84ea87734b21137ecda0e1e122bcb3c8d16d2a56e0 @@ -52,14 +52,14 @@ msal @ https://agent-int-packages.datadoghq.com/external/msal/msal-1.32.0-py3-no msal-extensions @ https://agent-int-packages.datadoghq.com/external/msal-extensions/msal_extensions-1.3.1-py3-none-any.whl#sha256=96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca oauthlib @ https://agent-int-packages.datadoghq.com/external/oauthlib/oauthlib-3.2.2-py3-none-any.whl#sha256=8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca openstacksdk @ https://agent-int-packages.datadoghq.com/external/openstacksdk/openstacksdk-4.3.0-py3-none-any.whl#sha256=157b2731b5e3b76db803be3e6ee511815a77d83e7d34da0acbf2248114bdc3be -opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.31.0-py3-none-any.whl#sha256=145b72c6c16977c005c568ec32f4946054ab793d8474a17fd884b0397582c5f2 +opentelemetry-api @ https://agent-int-packages.datadoghq.com/external/opentelemetry-api/opentelemetry_api-1.32.0-py3-none-any.whl#sha256=15df743c765078611f376037b0d9111ec5c1febf2ec9440cdd919370faa1ce55 orjson @ https://agent-int-packages.datadoghq.com/external/orjson/orjson-3.10.15-cp312-cp312-win_amd64.whl#sha256=ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa os-service-types @ https://agent-int-packages.datadoghq.com/external/os-service-types/os_service_types-1.7.0-py2.py3-none-any.whl#sha256=0505c72205690910077fb72b88f2a1f07533c8d39f2fe75b29583481764965d6 packaging @ https://agent-int-packages.datadoghq.com/external/packaging/packaging-24.2-py3-none-any.whl#sha256=09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 paramiko @ https://agent-int-packages.datadoghq.com/external/paramiko/paramiko-3.5.1-py3-none-any.whl#sha256=43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61 pathspec @ https://agent-int-packages.datadoghq.com/external/pathspec/pathspec-0.12.1-py3-none-any.whl#sha256=a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 pbr @ https://agent-int-packages.datadoghq.com/external/pbr/pbr-6.1.1-py2.py3-none-any.whl#sha256=38d4daea5d9fa63b3f626131b9d34947fd0c8be9b05a29276870580050a25a76 -platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.6-py3-none-any.whl#sha256=73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb +platformdirs @ https://agent-int-packages.datadoghq.com/external/platformdirs/platformdirs-4.3.7-py3-none-any.whl#sha256=a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94 ply @ https://agent-int-packages.datadoghq.com/external/ply/ply-3.11-py2.py3-none-any.whl#sha256=096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce prometheus-client @ https://agent-int-packages.datadoghq.com/external/prometheus-client/prometheus_client-0.21.1-py3-none-any.whl#sha256=594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301 protobuf @ https://agent-int-packages.datadoghq.com/external/protobuf/protobuf-5.29.3-cp310-abi3-win_amd64.whl#sha256=a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a @@ -78,7 +78,7 @@ pymqi @ https://agent-int-packages.datadoghq.com/built/pymqi/pymqi-1.12.11-20250 pymysql @ https://agent-int-packages.datadoghq.com/external/pymysql/PyMySQL-1.1.1-py3-none-any.whl#sha256=4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c pynacl @ https://agent-int-packages.datadoghq.com/external/pynacl/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl#sha256=20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 pyodbc @ https://agent-int-packages.datadoghq.com/external/pyodbc/pyodbc-5.2.0-cp312-cp312-win_amd64.whl#sha256=b1f5686b142759c5b2bdbeaa0692622c2ebb1f10780eb3c174b85f5607fbcf55 -pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.3.0-py3-none-any.whl#sha256=e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a +pyopenssl @ https://agent-int-packages.datadoghq.com/external/pyopenssl/pyOpenSSL-24.2.1-py3-none-any.whl#sha256=967d5719b12b243588573f39b0c677637145c7a1ffedcd495a487e58177fbb8d pysmi @ https://agent-int-packages.datadoghq.com/external/pysmi/pysmi-1.2.1-py3-none-any.whl#sha256=d97c60de9f81d33ab2899124d95a94fa7fefacc86ab6e00cbfec543a073e6d33 pysnmp @ https://agent-int-packages.datadoghq.com/external/pysnmp/pysnmp-5.1.0-py3-none-any.whl#sha256=375a8adfc6820faf24ace6761a6d20544e60580d714ff7266df272850c39b439 pysnmp-mibs @ https://agent-int-packages.datadoghq.com/external/pysnmp-mibs/pysnmp_mibs-0.1.6-py2.py3-none-any.whl#sha256=5e153ebe8e767c07940cea435f866c623ff6b2376155c7da75085b08d3774d48 @@ -86,7 +86,7 @@ pysnmpcrypto @ https://agent-int-packages.datadoghq.com/external/pysnmpcrypto/py pysocks @ https://agent-int-packages.datadoghq.com/external/pysocks/PySocks-1.7.1-py3-none-any.whl#sha256=2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 pyspnego @ https://agent-int-packages.datadoghq.com/external/pyspnego/pyspnego-0.11.2-py3-none-any.whl#sha256=74abc1fb51e59360eb5c5c9086e5962174f1072c7a50cf6da0bda9a4bcfdfbd4 python-dateutil @ https://agent-int-packages.datadoghq.com/external/python-dateutil/python_dateutil-2.9.0.post0-py2.py3-none-any.whl#sha256=a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 -pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.1-py2.py3-none-any.whl#sha256=89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57 +pytz @ https://agent-int-packages.datadoghq.com/external/pytz/pytz-2025.2-py2.py3-none-any.whl#sha256=5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00 pyvmomi @ https://agent-int-packages.datadoghq.com/built/pyvmomi/pyvmomi-8.0.3.0.1-20250218143926-py2.py3-none-win_amd64.whl#sha256=73d76bdcc5dec839f1e7e58303f1af9e6c10bf96d04ad2e5e7c88c9ebba04aac pywin32 @ https://agent-int-packages.datadoghq.com/external/pywin32/pywin32-308-cp312-cp312-win_amd64.whl#sha256=00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47 pyyaml @ https://agent-int-packages.datadoghq.com/external/pyyaml/PyYAML-6.0.2-cp312-cp312-win_amd64.whl#sha256=7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 @@ -104,21 +104,21 @@ s3transfer @ https://agent-int-packages.datadoghq.com/external/s3transfer/s3tran securesystemslib @ https://agent-int-packages.datadoghq.com/external/securesystemslib/securesystemslib-0.28.0-py3-none-any.whl#sha256=9e6b9abe36a511d4f52c759069db8f6f650362ba82d6efc7bc7466a458b3f499 semver @ https://agent-int-packages.datadoghq.com/external/semver/semver-3.0.4-py3-none-any.whl#sha256=9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746 service-identity @ https://agent-int-packages.datadoghq.com/external/service-identity/service_identity-24.2.0-py3-none-any.whl#sha256=6b047fbd8a84fd0bb0d55ebce4031e400562b9196e1e0d3e0fe2b8a59f6d4a85 -setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-76.0.0-py3-none-any.whl#sha256=199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6 -simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.20.1-cp312-cp312-win_amd64.whl#sha256=627d4486a1ea7edf1f66bb044ace1ce6b4c1698acd1b05353c97ba4864ea2e17 +setuptools @ https://agent-int-packages.datadoghq.com/external/setuptools/setuptools-78.1.0-py3-none-any.whl#sha256=3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8 +simplejson @ https://agent-int-packages.datadoghq.com/external/simplejson/simplejson-3.19.3-cp312-cp312-win_amd64.whl#sha256=1e662336db50ad665777e6548b5076329a94a0c3d4a0472971c588b3ef27de3a six @ https://agent-int-packages.datadoghq.com/external/six/six-1.17.0-py2.py3-none-any.whl#sha256=4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 snowflake-connector-python @ https://agent-int-packages.datadoghq.com/external/snowflake-connector-python/snowflake_connector_python-3.13.2-cp312-cp312-win_amd64.whl#sha256=82028c55d949889f759b78dd86b6249e9e4934cd6fcbe026cf7f41aefc9eb999 sortedcontainers @ https://agent-int-packages.datadoghq.com/external/sortedcontainers/sortedcontainers-2.4.0-py2.py3-none-any.whl#sha256=a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 soupsieve @ https://agent-int-packages.datadoghq.com/external/soupsieve/soupsieve-2.6-py3-none-any.whl#sha256=e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9 -sspilib @ https://agent-int-packages.datadoghq.com/external/sspilib/sspilib-0.2.0-cp312-cp312-win_amd64.whl#sha256=40a97ca83e503a175d1dc9461836994e47e8b9bcf56cab81a2c22e27f1993079 +sspilib @ https://agent-int-packages.datadoghq.com/external/sspilib/sspilib-0.3.0-cp312-cp312-win_amd64.whl#sha256=03b27fbf03367e4d75f3d650ee843476a58d86bf78e9d76054dd1d6fedfb6b02 stevedore @ https://agent-int-packages.datadoghq.com/external/stevedore/stevedore-5.4.1-py3-none-any.whl#sha256=d10a31c7b86cba16c1f6e8d15416955fc797052351a56af15e608ad20811fcfe supervisor @ https://agent-int-packages.datadoghq.com/external/supervisor/supervisor-4.2.5-py2.py3-none-any.whl#sha256=2ecaede32fc25af814696374b79e42644ecaba5c09494c51016ffda9602d0f08 tomlkit @ https://agent-int-packages.datadoghq.com/external/tomlkit/tomlkit-0.13.2-py3-none-any.whl#sha256=7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde tuf @ https://agent-int-packages.datadoghq.com/external/tuf/tuf-4.0.0-py3-none-any.whl#sha256=a22ab5fa6daf910b3052929fdce42ccad8a300e5e85715daaff9592aed980f7a -typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.12.2-py3-none-any.whl#sha256=04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d -tzdata @ https://agent-int-packages.datadoghq.com/external/tzdata/tzdata-2025.1-py2.py3-none-any.whl#sha256=7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639 +typing-extensions @ https://agent-int-packages.datadoghq.com/external/typing-extensions/typing_extensions-4.13.2-py3-none-any.whl#sha256=a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c +tzdata @ https://agent-int-packages.datadoghq.com/external/tzdata/tzdata-2025.2-py2.py3-none-any.whl#sha256=1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8 tzlocal @ https://agent-int-packages.datadoghq.com/external/tzlocal/tzlocal-5.3.1-py3-none-any.whl#sha256=eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d -urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.3.0-py3-none-any.whl#sha256=1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df +urllib3 @ https://agent-int-packages.datadoghq.com/external/urllib3/urllib3-2.4.0-py3-none-any.whl#sha256=4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813 vertica-python @ https://agent-int-packages.datadoghq.com/external/vertica-python/vertica_python-1.4.0-py3-none-any.whl#sha256=50fecd7687f4b0b9f6dee6e2b35c195af2a4f702ece01bd12e080b51756e000b websocket-client @ https://agent-int-packages.datadoghq.com/external/websocket-client/websocket_client-1.8.0-py3-none-any.whl#sha256=17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 wrapt @ https://agent-int-packages.datadoghq.com/external/wrapt/wrapt-1.17.2-cp312-cp312-win_amd64.whl#sha256=ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991 From 289f99090fbe364dc095f303633c6963d28a2f8d Mon Sep 17 00:00:00 2001 From: Zhengda Lu Date: Mon, 14 Apr 2025 15:24:22 +0000 Subject: [PATCH 7/7] Revert "Refactor imports (#19845)" This reverts commit 635afea395ba2e60ca14078efcb417551fa3659a. --- datadog_checks_base/README.md | 10 +- .../datadog_checks/base/checks/base.py | 83 +++++--------- .../base/checks/libs/prometheus.py | 7 +- .../base/checks/openmetrics/base_check.py | 5 +- .../base/checks/openmetrics/mixins.py | 14 ++- .../base/checks/openmetrics/v2/base.py | 5 +- .../base/checks/openmetrics/v2/scraper.py | 15 ++- .../base/checks/openmetrics/v2/utils.py | 4 +- .../datadog_checks/base/log.py | 18 ++-- .../base/stubs/datadog_agent.py | 11 +- .../datadog_checks/base/utils/_http_utils.py | 51 --------- .../datadog_checks/base/utils/db/sql.py | 4 +- .../datadog_checks/base/utils/db/utils.py | 6 +- .../base/utils/format/__init__.py | 3 - .../datadog_checks/base/utils/format/_json.py | 43 -------- .../datadog_checks/base/utils/format/json.py | 30 ------ .../datadog_checks/base/utils/http.py | 101 +++++++++++------- .../base/utils/replay/execute.py | 11 +- .../base/utils/replay/redirect.py | 15 ++- .../base/utils/serialization.py | 5 - .../datadog_checks/base/utils/tracing.py | 11 +- .../tests/base/utils/db/test_util.py | 12 +-- .../tests/base/utils/format/__init__.py | 3 - .../tests/base/utils/format/test_json.py | 26 ----- .../tests/base/utils/http/test_auth.py | 4 +- 25 files changed, 174 insertions(+), 323 deletions(-) delete mode 100644 datadog_checks_base/datadog_checks/base/utils/_http_utils.py delete mode 100644 datadog_checks_base/datadog_checks/base/utils/format/__init__.py delete mode 100644 datadog_checks_base/datadog_checks/base/utils/format/_json.py delete mode 100644 datadog_checks_base/datadog_checks/base/utils/format/json.py delete mode 100644 datadog_checks_base/tests/base/utils/format/__init__.py delete mode 100644 datadog_checks_base/tests/base/utils/format/test_json.py diff --git a/datadog_checks_base/README.md b/datadog_checks_base/README.md index d3b53f02ba5ea..adb02082216a4 100644 --- a/datadog_checks_base/README.md +++ b/datadog_checks_base/README.md @@ -32,11 +32,15 @@ pip install datadog-checks-base ## Performance Optimizations We strive to balance lean resource usage with a "batteries included" user experience. -We employ a few tricks to achieve this. +This is why we import some of our dependencies inside functions that use them instead of the more conventional import section at the top of the file. -One of them is the [lazy-loader][9] library that allows us to expose a nice API (simple, short imports) without the baseline memory overhead of importing everything all the time. +Below are some examples for how much we shave off the Python heap for a given dependency: -Another trick is to import some of our dependencies inside functions that use them instead of the more conventional import section at the top of the file. We rely on this the most in the `AgentCheck` base class. +- `requests==2.32.3`: 3.6MB +- `RequestWrapper` class (`datadog_checks_base==37.7.0`): 2.9MB +- `prometheus-client==0.21.1`: around 1MB + +This translates into even bigger savings when we run in the Agent, something close to 50MB. ## Troubleshooting diff --git a/datadog_checks_base/datadog_checks/base/checks/base.py b/datadog_checks_base/datadog_checks/base/checks/base.py index 940bca70f6b2f..5721947902b39 100644 --- a/datadog_checks_base/datadog_checks/base/checks/base.py +++ b/datadog_checks_base/datadog_checks/base/checks/base.py @@ -1,14 +1,15 @@ # (C) Datadog, Inc. 2018-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from __future__ import annotations - import copy import functools import importlib +import inspect import logging import os import re +import traceback +import unicodedata from collections import deque from os.path import basename from typing import ( # noqa: F401 @@ -26,10 +27,10 @@ Union, ) -import lazy_loader +import yaml +from pydantic import BaseModel, ValidationError from datadog_checks.base.agent import AGENT_RUNNING, aggregator, datadog_agent -from datadog_checks.base.utils.format import json from ..config import is_affirmative from ..constants import ServiceCheck @@ -45,8 +46,14 @@ ) from ..utils.agent.utils import should_profile_memory from ..utils.common import ensure_bytes, to_native_string +from ..utils.diagnose import Diagnosis from ..utils.fips import enable_fips +from ..utils.limiter import Limiter +from ..utils.metadata import MetadataManager +from ..utils.secrets import SecretsSanitizer +from ..utils.serialization import from_json, to_json from ..utils.tagging import GENERIC_TAGS +from ..utils.tls import TlsContextWrapper from ..utils.tracing import traced_class if AGENT_RUNNING: @@ -79,18 +86,7 @@ prof.start() if TYPE_CHECKING: - import inspect as _module_inspect import ssl # noqa: F401 - import traceback as _module_traceback - import unicodedata as _module_unicodedata - - from datadog_checks.base.utils.diagnose import Diagnosis - from datadog_checks.base.utils.http import RequestsWrapper - from datadog_checks.base.utils.metadata import MetadataManager - -inspect: _module_inspect = lazy_loader.load('inspect') -traceback: _module_traceback = lazy_loader.load('traceback') -unicodedata: _module_unicodedata = lazy_loader.load('unicodedata') # Metric types for which it's only useful to submit once per set of tags ONE_PER_CONTEXT_METRIC_TYPES = [aggregator.GAUGE, aggregator.RATE, aggregator.MONOTONIC_COUNT] @@ -345,9 +341,6 @@ def _get_metric_limiter(self, name, instance=None): limit = self._get_metric_limit(instance=instance) if limit > 0: - # See Performance Optimizations in this package's README.md. - from datadog_checks.base.utils.limiter import Limiter - return Limiter(name, 'metrics', limit, self.warning) return None @@ -392,22 +385,20 @@ def load_config(yaml_str): """ Convenience wrapper to ease programmatic use of this class from the C API. """ - # See Performance Optimizations in this package's README.md. - import yaml - return yaml.safe_load(yaml_str) @property - def http(self) -> RequestsWrapper: + def http(self): + # type: () -> RequestsWrapper """ Provides logic to yield consistent network behavior based on user configuration. Only new checks or checks on Agent 6.13+ can and should use this for HTTP requests. """ - if not hasattr(self, '_http'): - # See Performance Optimizations in this package's README.md. - from datadog_checks.base.utils.http import RequestsWrapper + # See Performance Optimizations in this package's README.md. + from ..utils.http import RequestsWrapper + if not hasattr(self, '_http'): self._http = RequestsWrapper(self.instance or {}, self.init_config, self.HTTP_CONFIG_REMAPPER, self.log) return self._http @@ -443,14 +434,12 @@ def formatted_tags(self): return self.__formatted_tags @property - def diagnosis(self) -> Diagnosis: + def diagnosis(self): + # type: () -> Diagnosis """ A Diagnosis object to register explicit diagnostics and record diagnoses. """ if not hasattr(self, '_diagnosis'): - # See Performance Optimizations in this package's README.md. - from datadog_checks.base.utils.diagnose import Diagnosis - self._diagnosis = Diagnosis(sanitize=self.sanitize) return self._diagnosis @@ -464,9 +453,6 @@ def get_tls_context(self, refresh=False, overrides=None): Since: Agent 7.24 """ if not hasattr(self, '_tls_context_wrapper'): - # See Performance Optimizations in this package's README.md. - from datadog_checks.base.utils.tls import TlsContextWrapper - self._tls_context_wrapper = TlsContextWrapper( self.instance or {}, self.TLS_CONFIG_REMAPPER, overrides=overrides ) @@ -477,7 +463,8 @@ def get_tls_context(self, refresh=False, overrides=None): return self._tls_context_wrapper.tls_context @property - def metadata_manager(self) -> MetadataManager: + def metadata_manager(self): + # type: () -> MetadataManager """ Used for sending metadata via Go bindings. """ @@ -485,9 +472,6 @@ def metadata_manager(self) -> MetadataManager: if not self.check_id and AGENT_RUNNING: raise RuntimeError('Attribute `check_id` must be set') - # See Performance Optimizations in this package's README.md. - from datadog_checks.base.utils.metadata import MetadataManager - self._metadata_manager = MetadataManager(self.name, self.check_id, self.log, self.METADATA_TRANSFORMERS) return self._metadata_manager @@ -516,9 +500,8 @@ def in_developer_mode(self): return False def log_typos_in_options(self, user_config, models_config, level): - # See Performance Optimizations in this package's README.md. + # only import it when running in python 3 from jellyfish import jaro_winkler_similarity - from pydantic import BaseModel user_configs = user_config or {} # type: Dict[str, Any] models_config = models_config or {} @@ -589,8 +572,6 @@ def load_configuration_model(import_path, model_name, config, context): model = getattr(package, model_name, None) if model is not None: - from pydantic import ValidationError - try: config_model = model.model_validate(config, context=context) except ValidationError as e: @@ -619,14 +600,12 @@ def load_configuration_model(import_path, model_name, config, context): def _get_config_model_context(self, config): return {'logger': self.log, 'warning': self.warning, 'configured_fields': frozenset(config)} - def register_secret(self, secret: str) -> None: + def register_secret(self, secret): + # type: (str) -> None """ Register a secret to be scrubbed by `.sanitize()`. """ if not hasattr(self, '_sanitizer'): - # See Performance Optimizations in this package's README.md. - from datadog_checks.base.utils.secrets import SecretsSanitizer - # Configure lazily so that checks that don't use sanitization aren't affected. self._sanitizer = SecretsSanitizer() self.log.setup_sanitization(sanitize=self.sanitize) @@ -1032,15 +1011,15 @@ def send_log(self, data, cursor=None, stream='default'): # convert seconds to milliseconds attributes['timestamp'] = int(timestamp * 1000) - datadog_agent.send_log(json.encode(attributes), self.check_id) + datadog_agent.send_log(to_json(attributes), self.check_id) if cursor is not None: - self.write_persistent_cache('log_cursor_{}'.format(stream), json.encode(cursor)) + self.write_persistent_cache('log_cursor_{}'.format(stream), to_json(cursor)) def get_log_cursor(self, stream='default'): # type: (str) -> dict[str, Any] | None """Returns the most recent log cursor from disk.""" data = self.read_persistent_cache('log_cursor_{}'.format(stream)) - return json.decode(data) if data else None + return from_json(data) if data else None def _log_deprecation(self, deprecation_key, *args): # type: (str, *str) -> None @@ -1211,11 +1190,7 @@ def get_diagnoses(self): The agent calls this method to retrieve diagnostics from integrations. This method runs explicit diagnostics if available. """ - return json.encode([d._asdict() for d in (self.diagnosis.diagnoses + self.diagnosis.run_explicit())]) - - def _clear_diagnosis(self) -> None: - if hasattr(self, '_diagnosis'): - self._diagnosis.clear() + return to_json([d._asdict() for d in (self.diagnosis.diagnoses + self.diagnosis.run_explicit())]) def _get_requests_proxy(self): # type: () -> ProxySettings @@ -1299,7 +1274,7 @@ def cancel(self): def run(self): # type: () -> str try: - self._clear_diagnosis() + self.diagnosis.clear() # Ignore check initializations if running in a separate process if is_affirmative(self.instance.get('process_isolation', self.init_config.get('process_isolation', False))): from ..utils.replay.execute import run_with_isolation @@ -1335,7 +1310,7 @@ def run(self): except Exception as e: message = self.sanitize(str(e)) tb = self.sanitize(traceback.format_exc()) - error_report = json.encode([{'message': message, 'traceback': tb}]) + error_report = to_json([{'message': message, 'traceback': tb}]) finally: if self.metric_limiter: if is_affirmative(self.debug_metrics.get('metric_contexts', False)): diff --git a/datadog_checks_base/datadog_checks/base/checks/libs/prometheus.py b/datadog_checks_base/datadog_checks/base/checks/libs/prometheus.py index a6ce894a421ff..3fe57e6191065 100644 --- a/datadog_checks_base/datadog_checks/base/checks/libs/prometheus.py +++ b/datadog_checks_base/datadog_checks/base/checks/libs/prometheus.py @@ -4,9 +4,6 @@ from itertools import tee -from prometheus_client.metrics_core import Metric -from prometheus_client.parser import _parse_sample, _replace_help_escaping - def text_fd_to_metric_families(fd): raw_lines, input_lines = tee(fd, 2) @@ -32,6 +29,10 @@ def _parse_payload(fd): Yields Metric's. """ + # See Performance Optimizations in this package's README.md. + from prometheus_client.metrics_core import Metric + from prometheus_client.parser import _parse_sample, _replace_help_escaping + name = '' documentation = '' typ = 'untyped' diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/base_check.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/base_check.py index 5d71cde0584fa..7fd6324a1bc90 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/base_check.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/base_check.py @@ -3,8 +3,6 @@ # Licensed under a 3-clause BSD style license (see LICENSE) from copy import deepcopy -import requests - from ...errors import CheckException from ...utils.tracing import traced_class from .. import AgentCheck @@ -74,6 +72,9 @@ def __init__(self, *args, **kwargs): """ The base class for any Prometheus-based integration. """ + # See Performance Optimizations in this package's README.md. + import requests + args = list(args) default_instances = kwargs.pop('default_instances', None) or {} default_namespace = kwargs.pop('default_namespace', None) diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py index 1a6cb13a09c34..ff2a801c5137a 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py @@ -10,15 +10,11 @@ from os.path import isfile from re import compile -import requests -from prometheus_client.samples import Sample - from datadog_checks.base.agent import datadog_agent from ...config import is_affirmative from ...errors import CheckException from ...utils.common import to_native_string -from ...utils.http import RequestsWrapper from .. import AgentCheck from ..libs.prometheus import text_fd_to_metric_families @@ -380,6 +376,10 @@ def get_http_handler(self, scraper_config): The http handler is cached using `prometheus_url` as key. The http handler doesn't use the cache if a bearer token is used to allow refreshing it. """ + + # See Performance Optimizations in this package's README.md. + from ...utils.http import RequestsWrapper + prometheus_url = scraper_config['prometheus_url'] bearer_token = scraper_config['_bearer_token'] if prometheus_url in self._http_handlers and bearer_token is None: @@ -826,6 +826,9 @@ def poll(self, scraper_config, headers=None): Custom headers can be added to the default headers. """ + # See Performance Optimizations in this package's README.md. + import requests + endpoint = scraper_config.get('prometheus_url') # Should we send a service check for when we make a request @@ -1060,6 +1063,9 @@ def _decumulate_histogram_buckets(self, metric): """ Decumulate buckets in a given histogram metric and adds the lower_bound label (le being upper_bound) """ + # See Performance Optimizations in this package's README.md. + from prometheus_client.samples import Sample + bucket_values_by_context_upper_bound = {} for sample in metric.samples: if sample[self.SAMPLE_NAME].endswith("_bucket"): diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/base.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/base.py index 0a502b95a4dea..d4a0722afc38a 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/base.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/base.py @@ -4,8 +4,6 @@ from collections import ChainMap from contextlib import contextmanager -from requests.exceptions import RequestException - from ....errors import ConfigurationError from ....utils.tracing import traced_class from ... import AgentCheck @@ -62,6 +60,9 @@ def check(self, _): Another thing to note is that this check ignores its instance argument completely. We take care of instance-level customization at initialization time. """ + # See Performance Optimizations in this package's README.md. + from requests.exceptions import RequestException + self.refresh_scrapers() for endpoint, scraper in self.scrapers.items(): diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py index ddc4dec38bb1e..ffcbb430f31ef 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py @@ -9,17 +9,12 @@ from math import isinf, isnan from typing import List # noqa: F401 -from prometheus_client.openmetrics.parser import text_fd_to_metric_families as parse_openmetrics -from prometheus_client.parser import text_fd_to_metric_families as parse_prometheus -from requests.exceptions import ConnectionError - from datadog_checks.base.agent import datadog_agent from ....config import is_affirmative from ....constants import ServiceCheck from ....errors import ConfigurationError from ....utils.functions import no_op, return_true -from ....utils.http import RequestsWrapper from .first_scrape_handler import first_scrape_handler from .labels import LabelAggregator, get_label_normalizer from .transform import MetricTransformer @@ -50,6 +45,9 @@ def __init__(self, check, config): """ The base class for any scraper overrides. """ + # See Performance Optimizations in this package's README.md. + from ....utils.http import RequestsWrapper + self.config = config # Save a reference to the check instance @@ -332,6 +330,10 @@ def parse_metrics(self): @property def parse_metric_families(self): + # See Performance Optimizations in this package's README.md. + from prometheus_client.openmetrics.parser import text_fd_to_metric_families as parse_openmetrics + from prometheus_client.parser import text_fd_to_metric_families as parse_prometheus + media_type = self._content_type.split(';')[0] # Setting `use_latest_spec` forces the use of the OpenMetrics format, otherwise # the format will be chosen based on the media type specified in the response's content-header. @@ -392,6 +394,9 @@ def stream_connection_lines(self): """ Yield the connection line. """ + # See Performance Optimizations in this package's README.md. + from requests.exceptions import ConnectionError + try: with self.get_connection() as connection: # Media type will be used to select parser dynamically diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/utils.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/utils.py index eb44d81cf358b..b613ec6c045bd 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/utils.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/utils.py @@ -1,7 +1,6 @@ # (C) Datadog, Inc. 2020-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from prometheus_client.samples import Sample NEGATIVE_INFINITY = float('-inf') @@ -10,6 +9,9 @@ def decumulate_histogram_buckets(sample_data): """ Decumulate buckets in a given histogram metric and adds the lower_bound label (le being upper_bound) """ + # See Performance Optimizations in this package's README.md. + from prometheus_client.samples import Sample + # TODO: investigate performance optimizations new_sample_data = [] bucket_values_by_context_upper_bound = {} diff --git a/datadog_checks_base/datadog_checks/base/log.py b/datadog_checks_base/datadog_checks/base/log.py index ea1f84c205433..0d641272696a1 100644 --- a/datadog_checks_base/datadog_checks/base/log.py +++ b/datadog_checks_base/datadog_checks/base/log.py @@ -1,24 +1,18 @@ # (C) Datadog, Inc. 2018-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from __future__ import annotations - import logging import sys -from typing import TYPE_CHECKING, Callable +import warnings +from typing import Callable # noqa: F401 -import lazy_loader +from urllib3.exceptions import InsecureRequestWarning from datadog_checks.base.agent import datadog_agent from .utils.common import to_native_string from .utils.tracing import tracing_enabled -if TYPE_CHECKING: - import inspect as _module_inspect - -inspect: _module_inspect = lazy_loader.load('inspect') - # Arbitrary number less than 10 (DEBUG) TRACE_LEVEL = 7 @@ -39,7 +33,8 @@ def __init__(self, logger, check): self.check = check self.check_id = self.check.check_id - def setup_sanitization(self, sanitize: Callable[[str], str]) -> None: + def setup_sanitization(self, sanitize): + # type: (Callable[[str], str]) -> None for handler in self.logger.handlers: if isinstance(handler, AgentLogHandler): handler.setFormatter(SanitizationFormatter(handler.formatter, sanitize=sanitize)) @@ -163,6 +158,9 @@ def init_logging(): rootLogger.addHandler(AgentLogHandler()) rootLogger.setLevel(_get_py_loglevel(datadog_agent.get_config('log_level'))) + # We log instead of emit warnings for unintentionally insecure HTTPS requests + warnings.simplefilter('ignore', InsecureRequestWarning) + # `requests` (used in a lot of checks) imports `urllib3`, which logs a bunch of stuff at the info level # Therefore, pre emptively increase the default level of that logger to `WARN` urllib_logger = logging.getLogger("requests.packages.urllib3") diff --git a/datadog_checks_base/datadog_checks/base/stubs/datadog_agent.py b/datadog_checks_base/datadog_checks/base/stubs/datadog_agent.py index 3f3abe790cc40..255e51803eca8 100644 --- a/datadog_checks_base/datadog_checks/base/stubs/datadog_agent.py +++ b/datadog_checks_base/datadog_checks/base/stubs/datadog_agent.py @@ -1,10 +1,11 @@ # (C) Datadog, Inc. 2018-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) +import json import re from collections import defaultdict -from datadog_checks.base.utils.format import json +from datadog_checks.base.utils.serialization import from_json, to_json class DatadogAgentStub(object): @@ -101,7 +102,7 @@ def get_host_tags(self): return self._host_tags def _set_host_tags(self, tags_dict): - self._host_tags = json.encode(tags_dict) + self._host_tags = json.dumps(tags_dict) def _reset_host_tags(self): self._host_tags = "{}" @@ -119,7 +120,7 @@ def set_check_metadata(self, check_id, name, value): self._metadata[(check_id, name)] = value def send_log(self, log_line, check_id): - self._sent_logs[check_id].append(json.decode(log_line)) + self._sent_logs[check_id].append(from_json(log_line)) def set_external_tags(self, external_tags): self._external_tags = external_tags @@ -138,8 +139,8 @@ def obfuscate_sql(self, query, options=None): if options: # Options provided is a JSON string because the Go stub requires it, whereas # the python stub does not for things such as testing. - if json.decode(options).get('return_json_metadata', False): - return json.encode({'query': re.sub(r'\s+', ' ', query or '').strip(), 'metadata': {}}) + if from_json(options).get('return_json_metadata', False): + return to_json({'query': re.sub(r'\s+', ' ', query or '').strip(), 'metadata': {}}) return re.sub(r'\s+', ' ', query or '').strip() def obfuscate_sql_exec_plan(self, plan, normalize=False): diff --git a/datadog_checks_base/datadog_checks/base/utils/_http_utils.py b/datadog_checks_base/datadog_checks/base/utils/_http_utils.py deleted file mode 100644 index 98c2299f238d8..0000000000000 --- a/datadog_checks_base/datadog_checks/base/utils/_http_utils.py +++ /dev/null @@ -1,51 +0,0 @@ -# (C) Datadog, Inc. 2025-present -# All rights reserved -# Licensed under a 3-clause BSD style license (see LICENSE) -from __future__ import annotations - -from typing import Any - - -def __getattr__(name: str) -> Any: - # This is used to lazily load imports when the path contains subpackages - if name == 'HostHeaderSSLAdapter': - from requests_toolbelt.adapters.host_header_ssl import HostHeaderSSLAdapter - - return HostHeaderSSLAdapter - - if name == 'BotoAWSRequestsAuth': - from aws_requests_auth.boto_utils import BotoAWSRequestsAuth - - return BotoAWSRequestsAuth - - if name == 'oauth2': - from oauthlib import oauth2 - - return oauth2 - - if name == 'cryptography_serialization': - from cryptography.hazmat.primitives import serialization - - return serialization - - if name == 'cryptography_x509_load_certificate': - from cryptography.x509 import load_der_x509_certificate - - return load_der_x509_certificate - - if name == 'cryptography_x509_ExtensionNotFound': - from cryptography.x509.extensions import ExtensionNotFound - - return ExtensionNotFound - - if name == 'cryptography_x509_AuthorityInformationAccessOID': - from cryptography.x509.oid import AuthorityInformationAccessOID - - return AuthorityInformationAccessOID - - if name == 'cryptography_x509_ExtensionOID': - from cryptography.x509.oid import ExtensionOID - - return ExtensionOID - - raise AttributeError(f'`{__name__}` object has no attribute `{name}`') diff --git a/datadog_checks_base/datadog_checks/base/utils/db/sql.py b/datadog_checks_base/datadog_checks/base/utils/db/sql.py index 6a69036e4c484..165f3063d0a8e 100644 --- a/datadog_checks_base/datadog_checks/base/utils/db/sql.py +++ b/datadog_checks_base/datadog_checks/base/utils/db/sql.py @@ -7,7 +7,7 @@ import mmh3 from datadog_checks.base import ensure_bytes -from datadog_checks.base.utils.format import json +from datadog_checks.base.utils.serialization import json, sort_keys_kwargs # Unicode character "Arabic Decimal Separator" (U+066B) is a character which looks like an ascii # comma, but is not treated like a comma when parsing metrics tags. This is used to replace @@ -52,5 +52,5 @@ def compute_exec_plan_signature(normalized_json_plan): """ if not normalized_json_plan: return None - with_sorted_keys = json.encode(json.decode(normalized_json_plan), sort_keys=True) + with_sorted_keys = json.dumps(json.loads(normalized_json_plan), **sort_keys_kwargs) return format(mmh3.hash64(with_sorted_keys, signed=False)[0], 'x') diff --git a/datadog_checks_base/datadog_checks/base/utils/db/utils.py b/datadog_checks_base/datadog_checks/base/utils/db/utils.py index 3c30c3d44b82c..b30dcdfb3b6b3 100644 --- a/datadog_checks_base/datadog_checks/base/utils/db/utils.py +++ b/datadog_checks_base/datadog_checks/base/utils/db/utils.py @@ -20,7 +20,7 @@ from datadog_checks.base.agent import datadog_agent from datadog_checks.base.log import get_check_logger from datadog_checks.base.utils.db.types import Transformer # noqa: F401 -from datadog_checks.base.utils.format import json +from datadog_checks.base.utils.serialization import json from datadog_checks.base.utils.tracing import INTEGRATION_TRACING_SERVICE_NAME, tracing_enabled from ..common import to_native_string @@ -193,7 +193,7 @@ def get_agent_host_tags(): if not host_tags: return result try: - tags_dict = json.decode(host_tags) or {} + tags_dict = json.loads(host_tags) or {} for key, value in tags_dict.items(): if isinstance(value, list): result.extend(value) @@ -250,7 +250,7 @@ def obfuscate_sql_with_metadata(query, options=None, replace_null_character=Fals if not statement.startswith('{'): return {'query': statement, 'metadata': {}} - statement_with_metadata = json.decode(statement) + statement_with_metadata = json.loads(statement) metadata = statement_with_metadata.get('metadata', {}) tables = metadata.pop('tables_csv', None) tables = [table.strip() for table in tables.split(',') if table != ''] if tables else None diff --git a/datadog_checks_base/datadog_checks/base/utils/format/__init__.py b/datadog_checks_base/datadog_checks/base/utils/format/__init__.py deleted file mode 100644 index c9f1f2a9882c7..0000000000000 --- a/datadog_checks_base/datadog_checks/base/utils/format/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# (C) Datadog, Inc. 2025-present -# All rights reserved -# Licensed under a 3-clause BSD style license (see LICENSE) diff --git a/datadog_checks_base/datadog_checks/base/utils/format/_json.py b/datadog_checks_base/datadog_checks/base/utils/format/_json.py deleted file mode 100644 index e95641507bc22..0000000000000 --- a/datadog_checks_base/datadog_checks/base/utils/format/_json.py +++ /dev/null @@ -1,43 +0,0 @@ -# (C) Datadog, Inc. 2025-present -# All rights reserved -# Licensed under a 3-clause BSD style license (see LICENSE) -from __future__ import annotations - -import logging -from typing import TYPE_CHECKING, Any - -if TYPE_CHECKING: - from collections.abc import Callable - -logger = logging.getLogger(__name__) - -try: - import orjson - - logger.debug('Using JSON implementation from orjson') - - def decode(s: str | bytes) -> Any: - return orjson.loads(s) - - def encode(obj: Any, *, sort_keys: bool = False, default: Callable[[Any], Any] | None = None) -> str: - return encode_bytes(obj, sort_keys=sort_keys, default=default).decode() - - def encode_bytes(obj: Any, *, sort_keys: bool = False, default: Callable[[Any], Any] | None = None) -> bytes: - if sort_keys: - return orjson.dumps(obj, option=orjson.OPT_SORT_KEYS, default=default) - - return orjson.dumps(obj, default=default) - -except ImportError: - import json - - logger.debug('Using JSON implementation from stdlib') - - def decode(s: str | bytes) -> Any: - return json.loads(s) - - def encode(obj: Any, *, sort_keys: bool = False, default: Callable[[Any], Any] | None = None) -> str: - return json.dumps(obj, sort_keys=sort_keys, separators=(',', ':'), default=default) - - def encode_bytes(obj: Any, *, sort_keys: bool = False, default: Callable[[Any], Any] | None = None) -> bytes: - return encode(obj, sort_keys=sort_keys, default=default).encode() diff --git a/datadog_checks_base/datadog_checks/base/utils/format/json.py b/datadog_checks_base/datadog_checks/base/utils/format/json.py deleted file mode 100644 index 50748516de154..0000000000000 --- a/datadog_checks_base/datadog_checks/base/utils/format/json.py +++ /dev/null @@ -1,30 +0,0 @@ -# (C) Datadog, Inc. 2025-present -# All rights reserved -# Licensed under a 3-clause BSD style license (see LICENSE) -from __future__ import annotations - -import warnings -from typing import TYPE_CHECKING, Any - -import lazy_loader - -if TYPE_CHECKING: - from collections.abc import Callable - - from datadog_checks.base.utils.format import _json - -with warnings.catch_warnings(): - warnings.filterwarnings('ignore', category=RuntimeWarning, module='lazy_loader') - json: _json = lazy_loader.load('datadog_checks.base.utils.format._json') - - -def decode(s: str | bytes) -> Any: - return json.decode(s) - - -def encode(obj: Any, *, sort_keys: bool = False, default: Callable[[Any], Any] | None = None) -> str: - return json.encode(obj, sort_keys=sort_keys, default=default) - - -def encode_bytes(obj: Any, *, sort_keys: bool = False, default: Callable[[Any], Any] | None = None) -> bytes: - return json.encode_bytes(obj, sort_keys=sort_keys, default=default) diff --git a/datadog_checks_base/datadog_checks/base/utils/http.py b/datadog_checks_base/datadog_checks/base/utils/http.py index a21d286f37265..afbefa7e2b13b 100644 --- a/datadog_checks_base/datadog_checks/base/utils/http.py +++ b/datadog_checks_base/datadog_checks/base/utils/http.py @@ -1,27 +1,28 @@ # (C) Datadog, Inc. 2019-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from __future__ import annotations - import logging import os import re import ssl -import warnings -from contextlib import ExitStack, contextmanager +from contextlib import contextmanager from copy import deepcopy +from io import open +from ipaddress import ip_address, ip_network from urllib.parse import quote, urlparse, urlunparse -import lazy_loader import requests +import requests_unixsocket from binary import KIBIBYTE +from cryptography.x509 import load_der_x509_certificate +from cryptography.x509.extensions import ExtensionNotFound +from cryptography.x509.oid import AuthorityInformationAccessOID, ExtensionOID from requests import auth as requests_auth from requests.exceptions import SSLError -from urllib3.exceptions import InsecureRequestWarning +from requests_toolbelt.adapters import host_header_ssl from wrapt import ObjectProxy from datadog_checks.base.agent import datadog_agent -from datadog_checks.base.utils import _http_utils from ..config import is_affirmative from ..errors import ConfigurationError @@ -30,16 +31,19 @@ from .network import CertAdapter, create_socket_connection from .time import get_timestamp -# See Performance Optimizations in this package's README.md. -requests_kerberos = lazy_loader.load('requests_kerberos') -requests_ntlm = lazy_loader.load('requests_ntlm') -requests_oauthlib = lazy_loader.load('requests_oauthlib') -requests_unixsocket = lazy_loader.load('requests_unixsocket') -jwt = lazy_loader.load('jwt') -ipaddress = lazy_loader.load('ipaddress') +try: + from contextlib import ExitStack +except ImportError: + from contextlib2 import ExitStack -# We log instead of emit warnings for unintentionally insecure HTTPS requests -warnings.simplefilter('ignore', InsecureRequestWarning) +# Import lazily to reduce memory footprint and ease installation for development +requests_aws = None +requests_kerberos = None +requests_ntlm = None +requests_oauthlib = None +oauth2 = None +jwt = None +serialization = None LOGGER = logging.getLogger(__file__) @@ -495,26 +499,23 @@ def load_intermediate_certs(self, der_cert, certs): # https://tools.ietf.org/html/rfc3280#section-4.2.2.1 # https://tools.ietf.org/html/rfc5280#section-5.2.7 try: - cert = _http_utils.cryptography_x509_load_certificate(der_cert) + cert = load_der_x509_certificate(der_cert) except Exception as e: self.logger.error('Error while deserializing peer certificate to discover intermediate certificates: %s', e) return try: authority_information_access = cert.extensions.get_extension_for_oid( - _http_utils.cryptography_x509_ExtensionOID.AUTHORITY_INFORMATION_ACCESS + ExtensionOID.AUTHORITY_INFORMATION_ACCESS ) - except _http_utils.cryptography_x509_ExtensionNotFound: + except ExtensionNotFound: self.logger.debug( 'No Authority Information Access extension found, skipping discovery of intermediate certificates' ) return for access_description in authority_information_access.value: - if ( - access_description.access_method - != _http_utils.cryptography_x509_AuthorityInformationAccessOID.CA_ISSUERS - ): + if access_description.access_method != AuthorityInformationAccessOID.CA_ISSUERS: continue uri = access_description.access_location.value @@ -540,7 +541,7 @@ def session(self): # Enables HostHeaderSSLAdapter # https://toolbelt.readthedocs.io/en/latest/adapters.html#hostheaderssladapter if self.tls_use_host_header: - self._session.mount('https://', _http_utils.HostHeaderSSLAdapter()) + self._session.mount('https://', host_header_ssl.HostHeaderSSLAdapter()) # Enable Unix Domain Socket (UDS) support. # See: https://github.com/msabramo/requests-unixsocket self._session.mount('{}://'.format(UDS_SCHEME), requests_unixsocket.UnixAdapter()) @@ -618,9 +619,9 @@ def should_bypass_proxy(url, no_proxy_uris): try: # If no_proxy_uri is an IP or IP CIDR. # A ValueError is raised if address does not represent a valid IPv4 or IPv6 address. - ip_network = ipaddress.ip_network(ensure_unicode(no_proxy_uri)) - ip_address = ipaddress.ip_address(ensure_unicode(parsed_uri)) - if ip_address in ip_network: + ipnetwork = ip_network(ensure_unicode(no_proxy_uri)) + ipaddress = ip_address(ensure_unicode(parsed_uri)) + if ipaddress in ipnetwork: return True except ValueError: # Treat no_proxy_uri as a domain name @@ -654,13 +655,21 @@ def create_digest_auth(config): def create_ntlm_auth(config): + global requests_ntlm + if requests_ntlm is None: + import requests_ntlm + return requests_ntlm.HttpNtlmAuth(config['ntlm_domain'], config['password']) def create_kerberos_auth(config): - KERBEROS_STRATEGIES['required'] = requests_kerberos.REQUIRED - KERBEROS_STRATEGIES['optional'] = requests_kerberos.OPTIONAL - KERBEROS_STRATEGIES['disabled'] = requests_kerberos.DISABLED + global requests_kerberos + if requests_kerberos is None: + import requests_kerberos + + KERBEROS_STRATEGIES['required'] = requests_kerberos.REQUIRED + KERBEROS_STRATEGIES['optional'] = requests_kerberos.OPTIONAL + KERBEROS_STRATEGIES['disabled'] = requests_kerberos.DISABLED # For convenience if config['kerberos_auth'] is None or is_affirmative(config['kerberos_auth']): @@ -683,11 +692,15 @@ def create_kerberos_auth(config): def create_aws_auth(config): + global requests_aws + if requests_aws is None: + from aws_requests_auth import boto_utils as requests_aws + for setting in ('aws_host', 'aws_region', 'aws_service'): if not config[setting]: raise ConfigurationError('AWS auth requires the setting `{}`'.format(setting)) - return _http_utils.BotoAWSRequestsAuth( + return requests_aws.BotoAWSRequestsAuth( aws_host=config['aws_host'], aws_region=config['aws_region'], aws_service=config['aws_service'] ) @@ -838,7 +851,15 @@ def __init__(self, config): def read(self, **request): if self._token is None or get_timestamp() >= self._expiration or 'error' in request: - client = _http_utils.oauth2.BackendApplicationClient(client_id=self._client_id) + global oauth2 + if oauth2 is None: + from oauthlib import oauth2 + + global requests_oauthlib + if requests_oauthlib is None: + import requests_oauthlib + + client = oauth2.BackendApplicationClient(client_id=self._client_id) oauth = requests_oauthlib.OAuth2Session(client=client) response = oauth.fetch_token(**self._fetch_options) @@ -890,12 +911,20 @@ def __init__(self, config): def read(self, **request): if self._token is None or 'error' in request: with open(self._private_key_path, 'rb') as f: - private_key = _http_utils.cryptography_serialization.load_pem_private_key(f.read(), password=None) + global serialization + if serialization is None: + from cryptography.hazmat.primitives import serialization + + global jwt + if jwt is None: + import jwt + + private_key = serialization.load_pem_private_key(f.read(), password=None) serialized_private = private_key.private_bytes( - encoding=_http_utils.cryptography_serialization.Encoding.PEM, - format=_http_utils.cryptography_serialization.PrivateFormat.PKCS8, - encryption_algorithm=_http_utils.cryptography_serialization.NoEncryption(), + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.PKCS8, + encryption_algorithm=serialization.NoEncryption(), ) exp = int(get_timestamp() + self._expiration) diff --git a/datadog_checks_base/datadog_checks/base/utils/replay/execute.py b/datadog_checks_base/datadog_checks/base/utils/replay/execute.py index 1d5b8bc38c47d..6cc97b37e10b8 100644 --- a/datadog_checks_base/datadog_checks/base/utils/replay/execute.py +++ b/datadog_checks_base/datadog_checks/base/utils/replay/execute.py @@ -5,10 +5,9 @@ import subprocess import sys -from datadog_checks.base.utils.format import json - from ..common import ensure_bytes, to_native_string from ..platform import Platform +from ..serialization import json from .constants import KNOWN_DATADOG_AGENT_SETTER_METHODS, EnvVars @@ -25,8 +24,8 @@ def run_with_isolation(check, aggregator, datadog_agent): env_vars[EnvVars.MESSAGE_INDICATOR] = message_indicator env_vars[EnvVars.CHECK_NAME] = check.name env_vars[EnvVars.CHECK_ID] = check.check_id - env_vars[EnvVars.INIT_CONFIG] = to_native_string(json.encode(init_config)) - env_vars[EnvVars.INSTANCE] = to_native_string(json.encode(instance)) + env_vars[EnvVars.INIT_CONFIG] = to_native_string(json.dumps(init_config)) + env_vars[EnvVars.INSTANCE] = to_native_string(json.dumps(instance)) if Platform.is_windows(): env_vars[EnvVars.DDTRACE] = "false" @@ -61,7 +60,7 @@ def run_with_isolation(check, aggregator, datadog_agent): check.log.trace(line) message_type, _, message = procedure.partition(':') - message = json.decode(message) + message = json.loads(message) if message_type == 'aggregator': getattr(aggregator, message['method'])(check, *message['args'], **message['kwargs']) elif message_type == 'log': @@ -70,7 +69,7 @@ def run_with_isolation(check, aggregator, datadog_agent): method = message['method'] value = getattr(datadog_agent, method)(*message['args'], **message['kwargs']) if method not in KNOWN_DATADOG_AGENT_SETTER_METHODS: - process.stdin.write(b'%s\n' % ensure_bytes(json.encode({'value': value}))) + process.stdin.write(b'%s\n' % ensure_bytes(json.dumps({'value': value}))) process.stdin.flush() elif message_type == 'error': check.log.error(message[0]['traceback']) diff --git a/datadog_checks_base/datadog_checks/base/utils/replay/redirect.py b/datadog_checks_base/datadog_checks/base/utils/replay/redirect.py index 99a317f16d771..867c5c98b2823 100644 --- a/datadog_checks_base/datadog_checks/base/utils/replay/redirect.py +++ b/datadog_checks_base/datadog_checks/base/utils/replay/redirect.py @@ -5,13 +5,12 @@ import os import sys -from datadog_checks.base.utils.format import json - from ...checks import base from ...log import LOG_LEVEL_MAP, TRACE_LEVEL, _get_py_loglevel from ...utils.common import to_native_string from ...utils.metadata import core from ...utils.replay.constants import KNOWN_DATADOG_AGENT_SETTER_METHODS, EnvVars +from ...utils.serialization import json MESSAGE_INDICATOR = os.environ[EnvVars.MESSAGE_INDICATOR] LOG_METHODS = {log_level: log_method.lower() for log_method, log_level in LOG_LEVEL_MAP.items()} @@ -31,7 +30,7 @@ def method(*args, **kwargs): print( '{}:aggregator:{}'.format( MESSAGE_INDICATOR, - to_native_string(json.encode({'method': method_name, 'args': list(args)[1:], 'kwargs': kwargs})), + to_native_string(json.dumps({'method': method_name, 'args': list(args)[1:], 'kwargs': kwargs})), ) ) @@ -50,11 +49,11 @@ def method(*args, **kwargs): print( '{}:datadog_agent:{}'.format( MESSAGE_INDICATOR, - to_native_string(json.encode({'method': method_name, 'args': list(args), 'kwargs': kwargs})), + to_native_string(json.dumps({'method': method_name, 'args': list(args), 'kwargs': kwargs})), ) ) if read: - return json.decode(sys.stdin.readline())['value'] + return json.loads(sys.stdin.readline())['value'] return method @@ -64,7 +63,7 @@ def log(self, level, *args, **kwargs): print( '{}:log:{}'.format( MESSAGE_INDICATOR, - to_native_string(json.encode({'method': LOG_METHODS[level], 'args': [str(a) for a in args]})), + to_native_string(json.dumps({'method': LOG_METHODS[level], 'args': [str(a) for a in args]})), ) ) @@ -81,8 +80,8 @@ def log(self, level, *args, **kwargs): def run_check(check_class): check = check_class( os.environ[EnvVars.CHECK_NAME], - json.decode(os.environ[EnvVars.INIT_CONFIG]), - [json.decode(os.environ[EnvVars.INSTANCE])], + json.loads(os.environ[EnvVars.INIT_CONFIG]), + [json.loads(os.environ[EnvVars.INSTANCE])], ) check.check_id = os.environ[EnvVars.CHECK_ID] diff --git a/datadog_checks_base/datadog_checks/base/utils/serialization.py b/datadog_checks_base/datadog_checks/base/utils/serialization.py index a9fc6c0e1bd4b..92af1c590349a 100644 --- a/datadog_checks_base/datadog_checks/base/utils/serialization.py +++ b/datadog_checks_base/datadog_checks/base/utils/serialization.py @@ -1,8 +1,3 @@ -""" -This module is deprecated and will begin emitting deprecation warnings after all official -integrations have migrated to the new `datadog_checks.base.utils.format.json` module. -""" - # (C) Datadog, Inc. 2020-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) diff --git a/datadog_checks_base/datadog_checks/base/utils/tracing.py b/datadog_checks_base/datadog_checks/base/utils/tracing.py index 5899b0443cb51..36ee2b28d9f2a 100644 --- a/datadog_checks_base/datadog_checks/base/utils/tracing.py +++ b/datadog_checks_base/datadog_checks/base/utils/tracing.py @@ -1,24 +1,15 @@ # (C) Datadog, Inc. 2018-present # All rights reserved # Licensed under Simplified BSD License (see LICENSE) -from __future__ import annotations - import functools +import inspect import os -from typing import TYPE_CHECKING - -import lazy_loader from datadog_checks.base.agent import datadog_agent from ..config import is_affirmative from ..utils.common import to_native_string -if TYPE_CHECKING: - import inspect as _module_inspect - -inspect: _module_inspect = lazy_loader.load('inspect') - EXCLUDED_MODULES = ['threading'] # During regular continuous tracing we trace only the check's top-level 'run' and diff --git a/datadog_checks_base/tests/base/utils/db/test_util.py b/datadog_checks_base/tests/base/utils/db/test_util.py index 606787f05a25e..9972772854790 100644 --- a/datadog_checks_base/tests/base/utils/db/test_util.py +++ b/datadog_checks_base/tests/base/utils/db/test_util.py @@ -23,7 +23,7 @@ resolve_db_host, tracked_query, ) -from datadog_checks.base.utils.format import json +from datadog_checks.base.utils.serialization import json @pytest.mark.parametrize( @@ -129,7 +129,7 @@ class DBExceptionForTests(BaseException): "obfuscator_return_value,expected_value", [ ( - json.encode( + json.dumps( { 'query': 'SELECT * FROM datadog', 'metadata': {'tables_csv': 'datadog,', 'commands': ['SELECT'], 'comments': None}, @@ -150,7 +150,7 @@ class DBExceptionForTests(BaseException): }, ), ( - json.encode( + json.dumps( { 'query': 'SELECT * FROM datadog WHERE age = (SELECT AVG(age) FROM datadog2)', 'metadata': { @@ -170,7 +170,7 @@ class DBExceptionForTests(BaseException): }, ), ( - json.encode( + json.dumps( { 'query': 'COMMIT', 'metadata': {'tables_csv': '', 'commands': ['COMMIT'], 'comments': None}, @@ -229,7 +229,7 @@ def _mock_obfuscate_sql(query, options=None): ) def test_obfuscate_sql_with_metadata_replace_null_character(input_query, expected_query, replace_null_character): def _mock_obfuscate_sql(query, options=None): - return json.encode({'query': query, 'metadata': {}}) + return json.dumps({'query': query, 'metadata': {}}) # Check that it can handle null characters with mock.patch.object(datadog_agent, 'obfuscate_sql', passthrough=True) as mock_agent: @@ -374,7 +374,7 @@ def test_dbm_async_job_inactive_stop(aggregator): ) def test_default_json_event_encoding(input): # assert that the default json event encoding can handle all defined types without raising TypeError - assert json.encode(input, default=default_json_event_encoding) + assert json.dumps(input, default=default_json_event_encoding) def test_tracked_query(aggregator): diff --git a/datadog_checks_base/tests/base/utils/format/__init__.py b/datadog_checks_base/tests/base/utils/format/__init__.py deleted file mode 100644 index c9f1f2a9882c7..0000000000000 --- a/datadog_checks_base/tests/base/utils/format/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# (C) Datadog, Inc. 2025-present -# All rights reserved -# Licensed under a 3-clause BSD style license (see LICENSE) diff --git a/datadog_checks_base/tests/base/utils/format/test_json.py b/datadog_checks_base/tests/base/utils/format/test_json.py deleted file mode 100644 index 3c838d57a795c..0000000000000 --- a/datadog_checks_base/tests/base/utils/format/test_json.py +++ /dev/null @@ -1,26 +0,0 @@ -# (C) Datadog, Inc. 2025-present -# All rights reserved -# Licensed under a 3-clause BSD style license (see LICENSE) -from datadog_checks.base.utils.format import json - - -def test_encode_str(): - obj = {'b': 2, 'a': 1} - encoded = json.encode(obj) - assert encoded == '{"b":2,"a":1}' - decoded = json.decode(encoded) - assert obj == decoded - - -def test_encode_bytes(): - obj = {'b': 2, 'a': 1} - encoded = json.encode_bytes(obj) - assert encoded == b'{"b":2,"a":1}' - decoded = json.decode(encoded) - assert obj == decoded - - -def test_sort_keys(): - obj = {'b': 2, 'a': 1} - encoded = json.encode(obj, sort_keys=True) - assert encoded == '{"a":1,"b":2}' diff --git a/datadog_checks_base/tests/base/utils/http/test_auth.py b/datadog_checks_base/tests/base/utils/http/test_auth.py index 0fbb6bd17c411..9aaf1589eca58 100644 --- a/datadog_checks_base/tests/base/utils/http/test_auth.py +++ b/datadog_checks_base/tests/base/utils/http/test_auth.py @@ -123,7 +123,7 @@ def test_config_aws(): http = RequestsWrapper(instance, init_config) assert isinstance(http.options['auth'], requests_aws.BotoAWSRequestsAuth) - with mock.patch('datadog_checks.base.utils.http._http_utils.BotoAWSRequestsAuth') as m: + with mock.patch('datadog_checks.base.utils.http.requests_aws.BotoAWSRequestsAuth') as m: RequestsWrapper(instance, init_config) m.assert_called_once_with(aws_host='uri', aws_region='earth', aws_service='saas') @@ -137,7 +137,7 @@ def test_config_aws_service_remapper(): 'aws_host': {'name': 'aws_host', 'default': 'uri'}, } - with mock.patch('datadog_checks.base.utils.http._http_utils.BotoAWSRequestsAuth') as m: + with mock.patch('datadog_checks.base.utils.http.requests_aws.BotoAWSRequestsAuth') as m: RequestsWrapper(instance, init_config, remapper) m.assert_called_once_with(aws_host='uri', aws_region='us-east-1', aws_service='es')