From 059c6950fdcf3df45f0f3300130eec62d66f2c8f Mon Sep 17 00:00:00 2001 From: Lukas Hering Date: Sat, 18 Jul 2026 19:50:49 -0400 Subject: [PATCH 1/3] opentelemetry-configuration: resolve false-positive warning logs for newer minor version --- .../src/opentelemetry/configuration/README.md | 4 ++- .../configuration/file/_loader.py | 2 +- .../tests/file/test_loader.py | 33 ++++++++++++++----- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/opentelemetry-configuration/src/opentelemetry/configuration/README.md b/opentelemetry-configuration/src/opentelemetry/configuration/README.md index 93ff2634976..b6c4ffb922f 100644 --- a/opentelemetry-configuration/src/opentelemetry/configuration/README.md +++ b/opentelemetry-configuration/src/opentelemetry/configuration/README.md @@ -21,7 +21,9 @@ Which fields of the configuration schema the Python SDK actually applies at runt tox -e generate-config-from-jsonschema ``` -3. Update any version string references in tests and source: +3. Bump `_SUPPORTED_SCHEMA_MAJOR` / `_SUPPORTED_SCHEMA_MINOR` in `file/_loader.py` to the version of the vendored schema. + +4. Update any version string references in tests and source: ```sh grep -r "OLD_VERSION" opentelemetry-configuration/ diff --git a/opentelemetry-configuration/src/opentelemetry/configuration/file/_loader.py b/opentelemetry-configuration/src/opentelemetry/configuration/file/_loader.py index 6131e3c1b08..2502b621e6c 100644 --- a/opentelemetry-configuration/src/opentelemetry/configuration/file/_loader.py +++ b/opentelemetry-configuration/src/opentelemetry/configuration/file/_loader.py @@ -46,7 +46,7 @@ # warning. See # https://github.com/open-telemetry/opentelemetry-configuration/blob/main/VERSIONING.md _SUPPORTED_SCHEMA_MAJOR = 1 -_SUPPORTED_SCHEMA_MINOR = 0 +_SUPPORTED_SCHEMA_MINOR = 1 _schema_cache: list[dict] = [] diff --git a/opentelemetry-configuration/tests/file/test_loader.py b/opentelemetry-configuration/tests/file/test_loader.py index c9dcbee8e67..77b6edb23dc 100644 --- a/opentelemetry-configuration/tests/file/test_loader.py +++ b/opentelemetry-configuration/tests/file/test_loader.py @@ -14,6 +14,10 @@ ConfigurationError, load_config_file, ) +from opentelemetry.configuration.file._loader import ( + _SUPPORTED_SCHEMA_MAJOR, + _SUPPORTED_SCHEMA_MINOR, +) from opentelemetry.configuration.models import ( BatchSpanProcessor as BatchSpanProcessorConfig, ) @@ -325,6 +329,8 @@ def test_typed_config_feeds_factory_function(self): class TestFileFormatValidation(unittest.TestCase): """Validate the file_format version per the configuration spec.""" + _SUPPORTED = f"{_SUPPORTED_SCHEMA_MAJOR}.{_SUPPORTED_SCHEMA_MINOR}" + @staticmethod def _load(file_format: str) -> OpenTelemetryConfiguration: with tempfile.NamedTemporaryFile( @@ -338,26 +344,37 @@ def _load(file_format: str) -> OpenTelemetryConfiguration: os.unlink(path) def test_supported_version_is_accepted(self): - config = self._load("1.0") - self.assertEqual(config.file_format, "1.0") + config = self._load(self._SUPPORTED) + self.assertEqual(config.file_format, self._SUPPORTED) def test_pre_release_meta_tag_is_accepted(self): - # The meta tag is stripped; "1.0-rc.2" is treated as 1.0. - config = self._load("1.0-rc.2") - self.assertEqual(config.file_format, "1.0-rc.2") + # The meta tag is stripped, so the version is read as the supported one. + version = f"{self._SUPPORTED}-rc.2" + config = self._load(version) + self.assertEqual(config.file_format, version) def test_newer_minor_is_accepted_with_warning(self): + version = f"{_SUPPORTED_SCHEMA_MAJOR}.{_SUPPORTED_SCHEMA_MINOR + 1}" with self.assertLogs( "opentelemetry.configuration.file._loader", level="WARNING" ) as logs: - config = self._load("1.1") - self.assertEqual(config.file_format, "1.1") + config = self._load(version) + self.assertEqual(config.file_format, version) self.assertTrue( any("newer minor version" in message for message in logs.output) ) + def test_supported_minor_does_not_warn(self): + with self.assertNoLogs( + "opentelemetry.configuration.file._loader", level="WARNING" + ): + self._load(self._SUPPORTED) + def test_unsupported_major_is_rejected(self): - for version in ("2.0", "0.4"): + versions = [f"{_SUPPORTED_SCHEMA_MAJOR + 1}.0"] + if _SUPPORTED_SCHEMA_MAJOR > 0: + versions.append(f"{_SUPPORTED_SCHEMA_MAJOR - 1}.0") + for version in versions: with self.subTest(version=version): with self.assertRaises(ConfigurationError) as ctx: self._load(version) From 02aae131285b3ac3dbb164a665aebf5b8b7b5239 Mon Sep 17 00:00:00 2001 From: Lukas Hering Date: Sat, 18 Jul 2026 19:54:32 -0400 Subject: [PATCH 2/3] add changelog fragment --- .changelog/5436.fixed | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changelog/5436.fixed diff --git a/.changelog/5436.fixed b/.changelog/5436.fixed new file mode 100644 index 00000000000..b6e2f1c49e1 --- /dev/null +++ b/.changelog/5436.fixed @@ -0,0 +1 @@ +`opentelemetry-configuration`: resolve false-positive warning logs for newer schema minor version From ff1026c08f61d4f7e9e88c3b1089f81c40247816 Mon Sep 17 00:00:00 2001 From: Lukas Hering Date: Sat, 18 Jul 2026 19:56:48 -0400 Subject: [PATCH 3/3] remove redundant test --- opentelemetry-configuration/tests/file/test_loader.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/opentelemetry-configuration/tests/file/test_loader.py b/opentelemetry-configuration/tests/file/test_loader.py index 77b6edb23dc..0ff0e14bf94 100644 --- a/opentelemetry-configuration/tests/file/test_loader.py +++ b/opentelemetry-configuration/tests/file/test_loader.py @@ -344,7 +344,10 @@ def _load(file_format: str) -> OpenTelemetryConfiguration: os.unlink(path) def test_supported_version_is_accepted(self): - config = self._load(self._SUPPORTED) + with self.assertNoLogs( + "opentelemetry.configuration.file._loader", level="WARNING" + ): + config = self._load(self._SUPPORTED) self.assertEqual(config.file_format, self._SUPPORTED) def test_pre_release_meta_tag_is_accepted(self): @@ -364,12 +367,6 @@ def test_newer_minor_is_accepted_with_warning(self): any("newer minor version" in message for message in logs.output) ) - def test_supported_minor_does_not_warn(self): - with self.assertNoLogs( - "opentelemetry.configuration.file._loader", level="WARNING" - ): - self._load(self._SUPPORTED) - def test_unsupported_major_is_rejected(self): versions = [f"{_SUPPORTED_SCHEMA_MAJOR + 1}.0"] if _SUPPORTED_SCHEMA_MAJOR > 0: