From e2f090ac29f57ecef33fee2d99e12e1983304939 Mon Sep 17 00:00:00 2001 From: Louis Lotter Date: Fri, 15 May 2026 09:00:04 +0200 Subject: [PATCH] STAC-24669 Add Python 3.14 compatible dependency pins --- .setup-scripts/setup_env.sh | 2 +- servicenow/tests/test_servicenow.py | 8 ++++---- splunk_base/tests/test_splunk_instance_config.py | 4 ++-- splunk_metric/requirements.in | 4 ++-- splunk_metric/tests/test_unit.py | 4 ++-- stackstate_checks_base/requirements.in | 4 ++-- .../base/data/agent_requirements.in | 8 ++++---- stackstate_checks_base/tests/test_agent_check.py | 14 +++++++------- .../tests/test_agent_check_v2.py | 16 ++++++++-------- stackstate_checks_base/tests/test_utils.py | 2 +- stackstate_checks_dev/setup.py | 2 +- static_health/tests/test_static_health.py | 2 +- 12 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.setup-scripts/setup_env.sh b/.setup-scripts/setup_env.sh index deacc6bd..544d6e12 100755 --- a/.setup-scripts/setup_env.sh +++ b/.setup-scripts/setup_env.sh @@ -18,7 +18,7 @@ if [ ! -d $VENV_PATH ]; then pip install docker==6.1.3 pip install --upgrade pip setuptools pip install 'cython<3.0.0' - pip install "pyyaml==6.0.1" --no-build-isolation + pip install "pyyaml==6.0.3" --no-build-isolation pip install --upgrade wheel source $INTEGRATIONS_DIR_TMP/.setup-scripts/load_deps.sh else diff --git a/servicenow/tests/test_servicenow.py b/servicenow/tests/test_servicenow.py index f9ca8d09..dd76327b 100644 --- a/servicenow/tests/test_servicenow.py +++ b/servicenow/tests/test_servicenow.py @@ -562,7 +562,7 @@ def test_mandatory_instance_values(self): 1 validation error for InstanceInfo url Field required [type=missing, input_value={'user': 'name', 'password': 'secret'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/missing""") + For further information visit https://errors.pydantic.dev/2.12/v/missing""") }, { 'instance': {'user': 'name', 'url': "https://website.com"}, @@ -570,7 +570,7 @@ def test_mandatory_instance_values(self): 1 validation error for InstanceInfo password Field required [type=missing, input_value={'user': 'name', 'url': 'https://website.com'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/missing""") + For further information visit https://errors.pydantic.dev/2.12/v/missing""") }, { 'instance': {'password': 'secret', 'url': "https://website.com"}, @@ -579,7 +579,7 @@ def test_mandatory_instance_values(self): user Field required [type=missing, input_value={'password': \ 'secret', 'u...: 'https://website.com'}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/missing""") + For further information visit https://errors.pydantic.dev/2.12/v/missing""") } ] for test in tests: @@ -696,7 +696,7 @@ def test_batch_size(self): Input should be less than or equal to 10000 [type=less_than_equal, \ input_value=20000, input_type=int] For further information visit \ -https://errors.pydantic.dev/2.9/v/less_than_equal"""), result[0]['message']) +https://errors.pydantic.dev/2.12/v/less_than_equal"""), result[0]['message']) @mock.patch('requests.Session.get') def test_get_json_timeout(self, mock_request_get): diff --git a/splunk_base/tests/test_splunk_instance_config.py b/splunk_base/tests/test_splunk_instance_config.py index b4e810e8..d6f2b7cf 100644 --- a/splunk_base/tests/test_splunk_instance_config.py +++ b/splunk_base/tests/test_splunk_instance_config.py @@ -119,7 +119,7 @@ def test_check_audience_param_not_set(self): authentication.token_auth.audience Field required [type=missing, input_value={'name': 'admin', 'initia...dx', \ 'renewal_days': 10}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/missing""") + For further information visit https://errors.pydantic.dev/2.12/v/missing""") def test_check_name_param_not_set(self): """ @@ -152,4 +152,4 @@ def test_check_name_param_not_set(self): authentication.token_auth.name Field required [type=missing, input_value={'initial_token': 'dsfdgf...ch', \ 'renewal_days': 10}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/missing""") + For further information visit https://errors.pydantic.dev/2.12/v/missing""") diff --git a/splunk_metric/requirements.in b/splunk_metric/requirements.in index a191903c..2efe93ae 100644 --- a/splunk_metric/requirements.in +++ b/splunk_metric/requirements.in @@ -1,3 +1,3 @@ -pydantic==2.9.1 +pydantic==2.12.5 PyJWT==2.12.0 -docker==6.1.3 \ No newline at end of file +docker==6.1.3 diff --git a/splunk_metric/tests/test_unit.py b/splunk_metric/tests/test_unit.py index 4e456740..e2d9b1fd 100644 --- a/splunk_metric/tests/test_unit.py +++ b/splunk_metric/tests/test_unit.py @@ -561,7 +561,7 @@ def test_authentication_token_no_audience_parameter_check(set_authentication_mod authentication.token_auth.audience Field required [type=missing, input_value={'name': 'api-admin', 'in... 90, \ 'renewal_days': 10}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/missing""")) + For further information visit https://errors.pydantic.dev/2.12/v/missing""")) def test_authentication_token_no_name_parameter_check(set_authentication_mode_to_token, @@ -576,7 +576,7 @@ def test_authentication_token_no_name_parameter_check(set_authentication_mode_to authentication.token_auth.name Field required [type=missing, input_value={'audience': 'search', 'i... 90, \ 'renewal_days': 10}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/missing""")) + For further information visit https://errors.pydantic.dev/2.12/v/missing""")) def test_authentication_prefer_token_over_basic_check(config_authentication_prefer_token_over_basic_check, diff --git a/stackstate_checks_base/requirements.in b/stackstate_checks_base/requirements.in index fa2e2ac2..5bb08ebf 100644 --- a/stackstate_checks_base/requirements.in +++ b/stackstate_checks_base/requirements.in @@ -1,5 +1,5 @@ kubernetes==33.1.0; python_version > '3.0' -pyyaml==6.0.2; python_version > '3.0' +pyyaml==6.0.3; python_version > '3.0' prometheus-client==0.19.0; python_version > '3.0' protobuf==5.29.6; python_version > '3.0' pywin32==306; sys_platform == 'win32' and python_version > '3.0' @@ -12,7 +12,7 @@ boto3==1.34.11; python_version > '3.0' flatten-dict==0.2.0 Deprecated==1.2.10 enum34==1.1.10; python_version < '3.0' -pydantic==2.9.1 +pydantic==2.12.5 orjson==3.11.6; python_version > '3.0' pytz==2021.1 iso8601==0.1.14 diff --git a/stackstate_checks_base/stackstate_checks/base/data/agent_requirements.in b/stackstate_checks_base/stackstate_checks/base/data/agent_requirements.in index 46c3ca12..db5582f6 100644 --- a/stackstate_checks_base/stackstate_checks/base/data/agent_requirements.in +++ b/stackstate_checks_base/stackstate_checks/base/data/agent_requirements.in @@ -1,7 +1,7 @@ boto3==1.34.11; python_version > '3.0' cm-client==45.0.4 cryptography==46.0.7; python_version > '3.0' -ddtrace==3.12.5; python_version > '3.0' +ddtrace==4.8.4; python_version > '3.0' deprecated==1.2.10 docker==6.1.3 enum34==1.1.10; python_version < "3.0" @@ -14,16 +14,16 @@ pg8000==1.31.5 prometheus-client==0.19.0; python_version > '3.0' protobuf==5.29.6; python_version > '3.0' psutil==6.0.0 -psycopg2-binary==2.9.9; python_version > '3.0' +psycopg2-binary==2.9.11; python_version > '3.0' pymysql==1.1.2; python_version > '3.0' pynag==1.1.2 PyJWT==2.12.0 pytz==2021.1 pywin32==306; sys_platform == 'win32' and python_version > '3.0' -pyyaml==6.0.2; python_version > '3.0' +pyyaml==6.0.3; python_version > '3.0' requests-ntlm==1.3.0; python_version > '3.0' requests==2.33.0; python_version > '3.0' -pydantic==2.9.1 +pydantic==2.12.5 simplejson==3.20.1 six==1.16.0 urllib3==2.7.0 diff --git a/stackstate_checks_base/tests/test_agent_check.py b/stackstate_checks_base/tests/test_agent_check.py index 11fad9a0..83fd004a 100644 --- a/stackstate_checks_base/tests/test_agent_check.py +++ b/stackstate_checks_base/tests/test_agent_check.py @@ -1274,7 +1274,7 @@ def test_verify_types(self): 1 validation error for HealthStreamUrn source Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] - For further information visit https://errors.pydantic.dev/2.9/v/string_type""") + For further information visit https://errors.pydantic.dev/2.12/v/string_type""") with pytest.raises(ValidationError) as e2: HealthStreamUrn("source", None) @@ -1282,7 +1282,7 @@ def test_verify_types(self): 1 validation error for HealthStreamUrn stream_id Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] - For further information visit https://errors.pydantic.dev/2.9/v/string_type""") + For further information visit https://errors.pydantic.dev/2.12/v/string_type""") class TestHealthStream: @@ -1293,7 +1293,7 @@ def test_throws_error_when_expiry_on_sub_stream(self): 1 validation error for HealthStream Value error, Expiry cannot be disabled if a substream is specified \ [type=value_error, input_value={'urn': HealthStreamUrn(s...ne, 'expiry_seconds': 0}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/value_error""") + For further information visit https://errors.pydantic.dev/2.12/v/value_error""") def test_verify_types(self): with pytest.raises(ValidationError) as e: @@ -1303,7 +1303,7 @@ def test_verify_types(self): urn Input should be a valid dictionary or instance of HealthStreamUrn \ [type=model_type, input_value='str', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/model_type""") + For further information visit https://errors.pydantic.dev/2.12/v/model_type""") with pytest.raises(ValidationError) as e: HealthStream(HealthStreamUrn("source", "urn"), sub_stream=1) @@ -1312,7 +1312,7 @@ def test_verify_types(self): sub_stream Input should be a valid string \ [type=string_type, input_value=1, input_type=int] - For further information visit https://errors.pydantic.dev/2.9/v/string_type""") + For further information visit https://errors.pydantic.dev/2.12/v/string_type""") with pytest.raises(ValidationError) as e: HealthStream(HealthStreamUrn("source", "urn"), repeat_interval_seconds="") @@ -1321,7 +1321,7 @@ def test_verify_types(self): repeat_interval_seconds Input should be a valid integer, unable to parse \ string as an integer [type=int_parsing, input_value='', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/int_parsing""") + For further information visit https://errors.pydantic.dev/2.12/v/int_parsing""") with pytest.raises(ValidationError) as e: HealthStream(HealthStreamUrn("source", "urn"), expiry_seconds="") @@ -1330,7 +1330,7 @@ def test_verify_types(self): expiry_seconds Input should be a valid integer, unable to parse string \ as an integer [type=int_parsing, input_value='', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/int_parsing""") + For further information visit https://errors.pydantic.dev/2.12/v/int_parsing""") class TestHealth: diff --git a/stackstate_checks_base/tests/test_agent_check_v2.py b/stackstate_checks_base/tests/test_agent_check_v2.py index d6266876..878ea853 100644 --- a/stackstate_checks_base/tests/test_agent_check_v2.py +++ b/stackstate_checks_base/tests/test_agent_check_v2.py @@ -1151,7 +1151,7 @@ def test_verify_types(self): 1 validation error for HealthStreamUrn source Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] - For further information visit https://errors.pydantic.dev/2.9/v/string_type""") + For further information visit https://errors.pydantic.dev/2.12/v/string_type""") with pytest.raises(ValidationError) as e2: HealthStreamUrn("source", None) @@ -1159,7 +1159,7 @@ def test_verify_types(self): 1 validation error for HealthStreamUrn stream_id Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] - For further information visit https://errors.pydantic.dev/2.9/v/string_type""") + For further information visit https://errors.pydantic.dev/2.12/v/string_type""") class TestHealthStream: @@ -1170,7 +1170,7 @@ def test_throws_error_when_expiry_on_sub_stream(self): 1 validation error for HealthStream Value error, Expiry cannot be disabled if a substream is specified \ [type=value_error, input_value={'urn': HealthStreamUrn(s...ne, 'expiry_seconds': 0}, input_type=dict] - For further information visit https://errors.pydantic.dev/2.9/v/value_error""") + For further information visit https://errors.pydantic.dev/2.12/v/value_error""") def test_verify_types(self): with pytest.raises(ValidationError) as e: @@ -1180,7 +1180,7 @@ def test_verify_types(self): urn Input should be a valid dictionary or instance of HealthStreamUrn \ [type=model_type, input_value='str', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/model_type""") + For further information visit https://errors.pydantic.dev/2.12/v/model_type""") with pytest.raises(ValidationError) as e: HealthStream(HealthStreamUrn("source", "urn"), sub_stream=1) @@ -1189,7 +1189,7 @@ def test_verify_types(self): sub_stream Input should be a valid string \ [type=string_type, input_value=1, input_type=int] - For further information visit https://errors.pydantic.dev/2.9/v/string_type""") + For further information visit https://errors.pydantic.dev/2.12/v/string_type""") with pytest.raises(ValidationError) as e: HealthStream(HealthStreamUrn("source", "urn"), repeat_interval_seconds="") @@ -1198,7 +1198,7 @@ def test_verify_types(self): repeat_interval_seconds Input should be a valid integer, unable to parse \ string as an integer [type=int_parsing, input_value='', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/int_parsing""") + For further information visit https://errors.pydantic.dev/2.12/v/int_parsing""") with pytest.raises(ValidationError) as e: HealthStream(HealthStreamUrn("source", "urn"), expiry_seconds="") @@ -1207,7 +1207,7 @@ def test_verify_types(self): expiry_seconds Input should be a valid integer, unable to parse string as \ an integer [type=int_parsing, input_value='', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/int_parsing""") + For further information visit https://errors.pydantic.dev/2.12/v/int_parsing""") class TestHealth: @@ -1474,7 +1474,7 @@ def test_stateful_check_with_invalid_schema(self, sample_stateful_check_with_sch 1 validation error for State key_that_is_not_in_schema Extra inputs are not permitted [type=extra_forbidden, input_value='some_value', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/extra_forbidden""") + For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden""") class NormalCheck(AgentCheckV2): diff --git a/stackstate_checks_base/tests/test_utils.py b/stackstate_checks_base/tests/test_utils.py index a1df36ae..713b9ef0 100644 --- a/stackstate_checks_base/tests/test_utils.py +++ b/stackstate_checks_base/tests/test_utils.py @@ -153,7 +153,7 @@ def test_exception_state_without_valid_location(self, state_manager): 1 validation error for StateDescriptorSchema instance_key String should have at least 1 character [type=string_too_short, input_value='', input_type=str] - For further information visit https://errors.pydantic.dev/2.9/v/string_too_short""") + For further information visit https://errors.pydantic.dev/2.12/v/string_too_short""") instance = StateDescriptor("test", "this") # set an invalid file_location for this test diff --git a/stackstate_checks_dev/setup.py b/stackstate_checks_dev/setup.py index f308b1ce..0ee0d127 100644 --- a/stackstate_checks_dev/setup.py +++ b/stackstate_checks_dev/setup.py @@ -33,7 +33,7 @@ 'six==1.16.0', 'Deprecated==1.2.10', "enum34==1.1.10; python_version < '3.4'", - 'pydantic==2.9.1' + 'pydantic==2.12.5' ] diff --git a/static_health/tests/test_static_health.py b/static_health/tests/test_static_health.py index 267332a5..d15dbed8 100644 --- a/static_health/tests/test_static_health.py +++ b/static_health/tests/test_static_health.py @@ -80,7 +80,7 @@ def test_omitted_health_file(self): Field required [type=missing, input_value={'type': 'csv', \ 'delimite...ollection_interval': 15}, input_type=dict] For further information visit \ -https://errors.pydantic.dev/2.9/v/missing""") +https://errors.pydantic.dev/2.12/v/missing""") def test_empty_health_file(self): instance = {