diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bd0a53c3c5..8ad52a2bbee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#5096](https://github.com/open-telemetry/opentelemetry-python/pull/5096)) - Add WeaverLiveCheck test util ([#5088](https://github.com/open-telemetry/opentelemetry-python/pull/5088)) +- Enable ruff `flake8-comprehensions` (C4) rules and fix violations across the codebase + ([#5107](https://github.com/open-telemetry/opentelemetry-python/pull/5107)) ## Version 1.41.0/0.62b0 (2026-04-09) diff --git a/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/generator.py b/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/generator.py index acceb503ff8..3e9b31d776d 100644 --- a/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/generator.py +++ b/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/generator.py @@ -386,10 +386,10 @@ def _collect_imports(self, proto_file: str) -> Set[str]: Returns: Set of import statement strings """ - return set( + return { "import " + self._get_module_path(dep_file) for dep_file in self._file_dependencies.get(proto_file, []) - ) + } def _generate_enums_for_file( self, diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py index 3627db70581..9116b44739d 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py @@ -342,7 +342,7 @@ def __init__( elif isinstance(self._headers, dict): self._headers = tuple(self._headers.items()) if self._headers is None: - self._headers = tuple() + self._headers = () if channel_options: # merge the default channel options with the one passed as parameter diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.py index 4adf4ed4599..eedb1b3915a 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.py @@ -34,12 +34,8 @@ def get_dict_as_key(labels): """Converts a dict to be used as a unique key""" return tuple( sorted( - map( - lambda kv: ( - (kv[0], tuple(kv[1])) if isinstance(kv[1], list) else kv - ), - labels.items(), - ) + (kv[0], tuple(kv[1])) if isinstance(kv[1], list) else kv + for kv in labels.items() ) ) diff --git a/pyproject.toml b/pyproject.toml index b0d89f84ca7..406139e5a44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,6 +81,7 @@ select = [ "F", # pyflakes "E", # pycodestyle errors "W", # pycodestyle warnings + "C4", # flake8-comprehensions "PLC", # pylint convention "PLE", # pylint error "Q", # flake8-quotes diff --git a/shim/opentelemetry-opentracing-shim/tests/testbed/testcase.py b/shim/opentelemetry-opentracing-shim/tests/testbed/testcase.py index 3c16682fad3..745dd48e4c6 100644 --- a/shim/opentelemetry-opentracing-shim/tests/testbed/testcase.py +++ b/shim/opentelemetry-opentracing-shim/tests/testbed/testcase.py @@ -43,4 +43,4 @@ def assertIsNotChildOf(self, spanA, spanB): self.assertNotEqual(ctxA.span_id, ctxB.span_id) def assertNamesEqual(self, spans, names): - self.assertEqual(list(map(lambda x: x.name, spans)), names) + self.assertEqual([x.name for x in spans], names)