diff --git a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/code_correlation/internal/packages_resolver.py b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/code_correlation/internal/packages_resolver.py index b2ad5c261..056b0e6f7 100644 --- a/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/code_correlation/internal/packages_resolver.py +++ b/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/code_correlation/internal/packages_resolver.py @@ -364,7 +364,8 @@ def is_third_party_package(file_path: Path) -> bool: return False third_party_packages = _load_third_party_packages() - return distribution.name in third_party_packages + # Perform case-insensitive comparison to handle packages like 'Django' vs 'django' + return distribution.name.lower() in third_party_packages @lru_cache(maxsize=1024) diff --git a/aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/code_correlation/internal/test_packages_resolver.py b/aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/code_correlation/internal/test_packages_resolver.py index d39806a6f..4b897eb44 100644 --- a/aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/code_correlation/internal/test_packages_resolver.py +++ b/aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/code_correlation/internal/test_packages_resolver.py @@ -577,6 +577,18 @@ def test_is_third_party_package_not_in_list(self, mock_load_packages, mock_resol self.assertFalse(result) + @patch("amazon.opentelemetry.distro.code_correlation.internal.packages_resolver.resolve_package_from_filename") + @patch("amazon.opentelemetry.distro.code_correlation.internal.packages_resolver._load_third_party_packages") + def test_is_third_party_package_case_insensitive_match(self, mock_load_packages, mock_resolve): + """Test case-insensitive detection of third-party package.""" + # Test with uppercase package name in distribution but lowercase in third-party list + mock_resolve.return_value = Distribution(name="Django", version="4.2.0") + mock_load_packages.return_value = {"django", "requests", "urllib3"} + + result = is_third_party_package(Path("/path/to/Django/__init__.py")) + + self.assertTrue(result) + class TestIsUserCode(TestCase): """Test the is_user_code function."""