From 77f7f9c3d0e50156f21c4588eaaf685aa9b1cb8b Mon Sep 17 00:00:00 2001 From: Ogulcan Aydogan Date: Mon, 27 Apr 2026 00:32:15 +0100 Subject: [PATCH 1/3] chore: enable PIE (flake8-pie) ruff rule Part of #4227 Adds `PIE` to the ruff lint select list. Fixes all 49 auto-fixable violations (PIE790 unnecessary pass, PIE804 unnecessary dict kwargs, PIE808 unnecessary range start argument). Suppresses PIE796 on GenAiTokenTypeValues.COMPLETION which is an intentional deprecated alias for OUTPUT sharing the same enum value. --- .../exporter/otlp/proto/grpc/exporter.py | 1 - .../tests/test_otlp_exporter_mixin.py | 6 +-- .../tests/test_otlp_trace_exporter.py | 39 +++++-------------- .../tests/test_proto_span_exporter.py | 6 +-- .../tests/encoder/common_tests.py | 4 +- .../tests/encoder/common_tests.py | 4 +- .../events/test_event_logger_provider.py | 2 +- .../tests/logs/test_logger_provider.py | 2 +- .../tests/metrics/test_meter_provider.py | 2 +- .../tests/propagators/test__envcarrier.py | 7 +--- .../tests/propagators/test_propagators.py | 18 ++++----- .../test_tracecontexthttptextformat.py | 7 +--- .../tests/util/test__providers.py | 6 +-- .../tests/error_handler/test_error_handler.py | 8 ++-- ...xponential_bucket_histogram_aggregation.py | 4 +- opentelemetry-sdk/tests/metrics/test_view.py | 4 +- opentelemetry-sdk/tests/test_configurator.py | 4 +- .../tests/trace/test_span_processor.py | 14 +++---- opentelemetry-sdk/tests/trace/test_trace.py | 4 +- .../attributes/gen_ai_attributes.py | 2 +- pyproject.toml | 1 + 21 files changed, 51 insertions(+), 94 deletions(-) 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 5b79a9574bd..31e3d232c63 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 @@ -559,7 +559,6 @@ def _exporting(self) -> str: Returns a string that describes the overall exporter, to be used in warning messages. """ - pass def _set_meter_provider(self, meter_provider: MeterProvider) -> None: self._metrics = create_exporter_metrics( diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py index 91749fa16f5..70ded37c6bf 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py @@ -180,11 +180,7 @@ def setUp(self): self.span = _Span( "a", context=Mock( - **{ - "trace_state": {"a": "b", "c": "d"}, - "span_id": 10217189687419569865, - "trace_id": 67545097771067222548457157018666467027, - } + trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 ), ) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py index 64cd091a6c1..7043c7b141b 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py @@ -73,12 +73,9 @@ def setUp(self): self.tracer = tracer_provider.get_tracer(__name__) event_mock = Mock( - **{ - "timestamp": 1591240820506462784, - "attributes": BoundedAttributes( + timestamp=1591240820506462784, attributes=BoundedAttributes( attributes={"a": 1, "b": False} - ), - } + ) ) type(event_mock).name = PropertyMock(return_value="a") @@ -86,14 +83,10 @@ def setUp(self): self.span = _Span( "a", context=Mock( - **{ - "trace_state": {"a": "b", "c": "d"}, - "span_id": 10217189687419569865, - "trace_id": 67545097771067222548457157018666467027, - } + trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 ), resource=SDKResource({"a": 1, "b": False}), - parent=Mock(**{"span_id": 12345}), + parent=Mock(span_id=12345), attributes=BoundedAttributes(attributes={"a": 1, "b": True}), events=[event_mock], links=[ @@ -117,14 +110,10 @@ def setUp(self): self.span2 = _Span( "b", context=Mock( - **{ - "trace_state": {"a": "b", "c": "d"}, - "span_id": 10217189687419569865, - "trace_id": 67545097771067222548457157018666467027, - } + trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 ), resource=SDKResource({"a": 2, "b": False}), - parent=Mock(**{"span_id": 12345}), + parent=Mock(span_id=12345), instrumentation_scope=InstrumentationScope( name="name", version="version" ), @@ -133,14 +122,10 @@ def setUp(self): self.span3 = _Span( "c", context=Mock( - **{ - "trace_state": {"a": "b", "c": "d"}, - "span_id": 10217189687419569865, - "trace_id": 67545097771067222548457157018666467027, - } + trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 ), resource=SDKResource({"a": 1, "b": False}), - parent=Mock(**{"span_id": 12345}), + parent=Mock(span_id=12345), instrumentation_scope=InstrumentationScope( name="name2", version="version2" ), @@ -784,13 +769,9 @@ def _create_span_with_status(status: SDKStatus): span = _Span( "a", context=Mock( - **{ - "trace_state": {"a": "b", "c": "d"}, - "span_id": 10217189687419569865, - "trace_id": 67545097771067222548457157018666467027, - } + trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 ), - parent=Mock(**{"span_id": 12345}), + parent=Mock(span_id=12345), instrumentation_scope=InstrumentationScope( name="name", version="version" ), diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py index 1580e5a1802..a2c5488a8f2 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py @@ -54,11 +54,7 @@ BASIC_SPAN = _Span( "abc", context=Mock( - **{ - "trace_state": {"a": "b", "c": "d"}, - "span_id": 10217189687419569865, - "trace_id": 67545097771067222548457157018666467027, - } + trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 ), ) diff --git a/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py b/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py index ff5fe4d2a58..022bef03e6a 100644 --- a/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py +++ b/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py @@ -183,8 +183,8 @@ def get_data_for_max_tag_length_test( span.set_attribute("tuple4", (2,) * 10) span.set_attribute("tuple5", (True,) * 25) span.set_attribute("tuple6", (True,) * 10) - span.set_attribute("range1", range(0, 25)) - span.set_attribute("range2", range(0, 10)) + span.set_attribute("range1", range(25)) + span.set_attribute("range2", range(10)) span.set_attribute("empty_list", []) span.set_attribute("none_list", ["hello", None, "world"]) span.end(end_time=end_time) diff --git a/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py b/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py index ff5fe4d2a58..022bef03e6a 100644 --- a/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py +++ b/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py @@ -183,8 +183,8 @@ def get_data_for_max_tag_length_test( span.set_attribute("tuple4", (2,) * 10) span.set_attribute("tuple5", (True,) * 25) span.set_attribute("tuple6", (True,) * 10) - span.set_attribute("range1", range(0, 25)) - span.set_attribute("range2", range(0, 10)) + span.set_attribute("range1", range(25)) + span.set_attribute("range2", range(10)) span.set_attribute("empty_list", []) span.set_attribute("none_list", ["hello", None, "world"]) span.end(end_time=end_time) diff --git a/opentelemetry-api/tests/events/test_event_logger_provider.py b/opentelemetry-api/tests/events/test_event_logger_provider.py index e9013b5b6b2..baae7ba25c1 100644 --- a/opentelemetry-api/tests/events/test_event_logger_provider.py +++ b/opentelemetry-api/tests/events/test_event_logger_provider.py @@ -56,7 +56,7 @@ def test_get_event_logger_provider(self): with patch("opentelemetry._events._load_provider", Mock()): with patch( "opentelemetry._events.cast", - Mock(**{"return_value": "test_event_logger_provider"}), + Mock(return_value="test_event_logger_provider"), ): self.assertEqual( get_event_logger_provider(), diff --git a/opentelemetry-api/tests/logs/test_logger_provider.py b/opentelemetry-api/tests/logs/test_logger_provider.py index 71ba26a41e3..9d3798131c2 100644 --- a/opentelemetry-api/tests/logs/test_logger_provider.py +++ b/opentelemetry-api/tests/logs/test_logger_provider.py @@ -45,7 +45,7 @@ def test_get_logger_provider(self): with patch("opentelemetry._logs._internal._load_provider", Mock()): with patch( "opentelemetry._logs._internal.cast", - Mock(**{"return_value": "test_logger_provider"}), + Mock(return_value="test_logger_provider"), ): self.assertEqual( get_logger_provider(), "test_logger_provider" diff --git a/opentelemetry-api/tests/metrics/test_meter_provider.py b/opentelemetry-api/tests/metrics/test_meter_provider.py index 3ea3e2041bc..6dd5f23d4ba 100644 --- a/opentelemetry-api/tests/metrics/test_meter_provider.py +++ b/opentelemetry-api/tests/metrics/test_meter_provider.py @@ -94,7 +94,7 @@ def test_get_meter_provider(reset_meter_provider): with patch("opentelemetry.metrics._internal._load_provider", Mock()): with patch( "opentelemetry.metrics._internal.cast", - Mock(**{"return_value": "test_meter_provider"}), + Mock(return_value="test_meter_provider"), ): assert get_meter_provider() == "test_meter_provider" diff --git a/opentelemetry-api/tests/propagators/test__envcarrier.py b/opentelemetry-api/tests/propagators/test__envcarrier.py index e3e36f46230..f97cf046526 100644 --- a/opentelemetry-api/tests/propagators/test__envcarrier.py +++ b/opentelemetry-api/tests/propagators/test__envcarrier.py @@ -386,12 +386,7 @@ def test_fields(self, mock_get_current_span, mock_invalid_span_context): return_value=Mock( **{ "get_span_context.return_value": Mock( - **{ - "trace_id": 1, - "span_id": 2, - "trace_flags": 3, - "trace_state": TraceState([("a", "b")]), - } + trace_id=1, span_id=2, trace_flags=3, trace_state=TraceState([("a", "b")]) ) } ) diff --git a/opentelemetry-api/tests/propagators/test_propagators.py b/opentelemetry-api/tests/propagators/test_propagators.py index a62f8c0d1aa..7074d5c162c 100644 --- a/opentelemetry-api/tests/propagators/test_propagators.py +++ b/opentelemetry-api/tests/propagators/test_propagators.py @@ -30,7 +30,7 @@ def test_propagators(propagators): ) mock_compositehttppropagator.configure_mock( - **{"side_effect": test_propagators} + side_effect=test_propagators ) # pylint: disable=import-outside-toplevel @@ -51,7 +51,7 @@ def test_propagators(propagators): ) mock_compositehttppropagator.configure_mock( - **{"side_effect": test_propagators} + side_effect=test_propagators ) # pylint: disable=import-outside-toplevel @@ -74,7 +74,7 @@ def test_propagators(propagators): ) mock_compositehttppropagator.configure_mock( - **{"side_effect": test_propagators} + side_effect=test_propagators ) # pylint: disable=import-outside-toplevel @@ -89,13 +89,12 @@ def test_non_default_propagators( self, mock_entry_points, mock_compositehttppropagator ): mock_entry_points.configure_mock( - **{ - "side_effect": [ + side_effect=[ [ Mock( **{ "load.return_value": Mock( - **{"return_value": "a"} + return_value="a" ) } ), @@ -104,7 +103,7 @@ def test_non_default_propagators( Mock( **{ "load.return_value": Mock( - **{"return_value": "b"} + return_value="b" ) } ) @@ -113,20 +112,19 @@ def test_non_default_propagators( Mock( **{ "load.return_value": Mock( - **{"return_value": "c"} + return_value="c" ) } ) ], ] - } ) def test_propagators(propagators): self.assertEqual(propagators, ["a", "b", "c"]) mock_compositehttppropagator.configure_mock( - **{"side_effect": test_propagators} + side_effect=test_propagators ) # pylint: disable=import-outside-toplevel diff --git a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py index 87d410c5bee..6be4352152d 100644 --- a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py +++ b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py @@ -237,12 +237,7 @@ def test_fields(self, mock_get_current_span, mock_invalid_span_context): return_value=Mock( **{ "get_span_context.return_value": Mock( - **{ - "trace_id": 1, - "span_id": 2, - "trace_flags": 3, - "trace_state": TraceState([("a", "b")]), - } + trace_id=1, span_id=2, trace_flags=3, trace_state=TraceState([("a", "b")]) ) } ) diff --git a/opentelemetry-api/tests/util/test__providers.py b/opentelemetry-api/tests/util/test__providers.py index 73deea30484..5dc4fca3454 100644 --- a/opentelemetry-api/tests/util/test__providers.py +++ b/opentelemetry-api/tests/util/test__providers.py @@ -21,19 +21,17 @@ def test__providers(self, mock_entry_points): reload(_providers) mock_entry_points.configure_mock( - **{ - "side_effect": [ + side_effect=[ [ Mock( **{ "load.return_value": Mock( - **{"return_value": "a"} + return_value="a" ) } ), ], ] - } ) self.assertEqual( diff --git a/opentelemetry-sdk/tests/error_handler/test_error_handler.py b/opentelemetry-sdk/tests/error_handler/test_error_handler.py index fadd409d77c..aa9d12797db 100644 --- a/opentelemetry-sdk/tests/error_handler/test_error_handler.py +++ b/opentelemetry-sdk/tests/error_handler/test_error_handler.py @@ -43,12 +43,10 @@ class AssertionErrorHandler(ErrorHandler, AssertionError): ) mock_entry_points.configure_mock( - **{ - "return_value": [ + return_value=[ mock_entry_point_zero_division_error_handler, mock_entry_point_assertion_error_handler, ] - } ) error = ZeroDivisionError() @@ -80,7 +78,7 @@ def _handle(self, error: Exception): ) mock_entry_points.configure_mock( - **{"return_value": [mock_entry_point_error_error_handler]} + return_value=[mock_entry_point_error_error_handler] ) error = ZeroDivisionError() @@ -104,7 +102,7 @@ def __new__(cls): ) mock_entry_points.configure_mock( - **{"return_value": [mock_entry_point_error_handler]} + return_value=[mock_entry_point_error_handler] ) error = IndexError() diff --git a/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponential_bucket_histogram_aggregation.py b/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponential_bucket_histogram_aggregation.py index fea16a7bc87..a055edf6810 100644 --- a/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponential_bucket_histogram_aggregation.py +++ b/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponential_bucket_histogram_aggregation.py @@ -498,7 +498,7 @@ def mock_increment(self, bucket_index: int) -> None: exponential_histogram_aggregation._value_positive.offset, ) - for index in range(0, 256): + for index in range(256): self.assertLessEqual( exponential_histogram_aggregation._value_positive[index], 6 * increment, @@ -567,7 +567,7 @@ def test_move_into(self): exponential_histogram_aggregation_1._value_positive.offset, ) - for index in range(0, 256): + for index in range(256): self.assertLessEqual( exponential_histogram_aggregation_1._value_positive[index], 6 ) diff --git a/opentelemetry-sdk/tests/metrics/test_view.py b/opentelemetry-sdk/tests/metrics/test_view.py index 03914c99c6f..a1c0ff4bdc7 100644 --- a/opentelemetry-sdk/tests/metrics/test_view.py +++ b/opentelemetry-sdk/tests/metrics/test_view.py @@ -19,7 +19,7 @@ def test_instrument_type(self): def test_instrument_name(self): mock_instrument = Mock() - mock_instrument.configure_mock(**{"name": "instrument_name"}) + mock_instrument.configure_mock(name="instrument_name") self.assertTrue( View(instrument_name="instrument_name")._match(mock_instrument) @@ -27,7 +27,7 @@ def test_instrument_name(self): def test_instrument_unit(self): mock_instrument = Mock() - mock_instrument.configure_mock(**{"unit": "instrument_unit"}) + mock_instrument.configure_mock(unit="instrument_unit") self.assertTrue( View(instrument_unit="instrument_unit")._match(mock_instrument) diff --git a/opentelemetry-sdk/tests/test_configurator.py b/opentelemetry-sdk/tests/test_configurator.py index fbf4bd3b3c5..97d8941c1fb 100644 --- a/opentelemetry-sdk/tests/test_configurator.py +++ b/opentelemetry-sdk/tests/test_configurator.py @@ -1464,7 +1464,7 @@ def mock_entry_points_impl(group, name): class TestImportConfigComponents(TestCase): @patch( "opentelemetry.sdk._configuration.entry_points", - **{"side_effect": KeyError}, + side_effect=KeyError, ) def test__import_config_components_missing_entry_point( self, mock_entry_points @@ -1477,7 +1477,7 @@ def test__import_config_components_missing_entry_point( @patch( "opentelemetry.sdk._configuration.entry_points", - **{"side_effect": StopIteration}, + side_effect=StopIteration, ) def test__import_config_components_missing_component( self, mock_entry_points diff --git a/opentelemetry-sdk/tests/trace/test_span_processor.py b/opentelemetry-sdk/tests/trace/test_span_processor.py index 4499427cc1a..04734d0fb30 100644 --- a/opentelemetry-sdk/tests/trace/test_span_processor.py +++ b/opentelemetry-sdk/tests/trace/test_span_processor.py @@ -274,7 +274,7 @@ def create_default_span() -> trace_api.Span: def test_on_start(self): multi_processor = self.create_multi_span_processor() - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 5)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(5)] for mock_processor in mocks: multi_processor.add_span_processor(mock_processor) @@ -291,7 +291,7 @@ def test_on_start(self): def test_on_ending(self): multi_processor = self.create_multi_span_processor() - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 5)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(5)] for mock_processor in mocks: multi_processor.add_span_processor(mock_processor) @@ -307,7 +307,7 @@ def test_on_ending(self): def test_on_end(self): multi_processor = self.create_multi_span_processor() - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 5)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(5)] for mock_processor in mocks: multi_processor.add_span_processor(mock_processor) @@ -321,7 +321,7 @@ def test_on_end(self): def test_on_shutdown(self): multi_processor = self.create_multi_span_processor() - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 5)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(5)] for mock_processor in mocks: multi_processor.add_span_processor(mock_processor) @@ -333,7 +333,7 @@ def test_on_shutdown(self): def test_force_flush(self): multi_processor = self.create_multi_span_processor() - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 5)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(5)] for mock_processor in mocks: multi_processor.add_span_processor(mock_processor) timeout_millis = 100 @@ -471,7 +471,7 @@ def delayed_flush(_): late_mock = mock.Mock(spec=trace.SpanProcessor) late_mock.force_flush = mock.Mock(side_effect=delayed_flush) - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 4)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(4)] mocks.insert(0, late_mock) for mock_processor in mocks: @@ -491,7 +491,7 @@ def test_force_flush_late_by_span_processor(self): late_mock = mock.Mock(spec=trace.SpanProcessor) late_mock.force_flush = mock.Mock(return_value=False) - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 4)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(4)] mocks.insert(0, late_mock) for mock_processor in mocks: diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 6221da51cb2..44299023b41 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -661,7 +661,7 @@ def test_surplus_span_links(self): max_links = trace.SpanLimits().max_links links = [ trace_api.Link(trace_api.SpanContext(0x1, idx, is_remote=False)) - for idx in range(0, 16 + max_links) + for idx in range(16 + max_links) ] tracer = new_tracer() with tracer.start_as_current_span("span", links=links) as root: @@ -670,7 +670,7 @@ def test_surplus_span_links(self): def test_surplus_span_attributes(self): # pylint: disable=protected-access max_attrs = trace.SpanLimits().max_span_attributes - attributes = {str(idx): idx for idx in range(0, 16 + max_attrs)} + attributes = {str(idx): idx for idx in range(16 + max_attrs)} tracer = new_tracer() with tracer.start_as_current_span( "span", attributes=attributes diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/gen_ai_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/gen_ai_attributes.py index 111cf19a988..dbb53a10a13 100644 --- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/gen_ai_attributes.py +++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/gen_ai_attributes.py @@ -552,5 +552,5 @@ class GenAiTokenTypeValues(Enum): """Input tokens (prompt, input, etc.).""" COMPLETION = "output" """Deprecated: Replaced by `output`.""" - OUTPUT = "output" + OUTPUT = "output" # noqa: PIE796 # intentional deprecated alias for COMPLETION """Output tokens (completion, response, etc.).""" diff --git a/pyproject.toml b/pyproject.toml index 83b489aa940..dbe361314bd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -88,6 +88,7 @@ select = [ "Q", # https://docs.astral.sh/ruff/rules/#flake8-quotes-q "G", # https://docs.astral.sh/ruff/rules/#flake8-logging-format-g "TID", # https://docs.astral.sh/ruff/rules/#flake8-tidy-imports-tid + "PIE", # https://docs.astral.sh/ruff/rules/#flake8-pie-pie "UP", # https://docs.astral.sh/ruff/rules/#pyupgrade-up ] From 5f7d9b32158a1c9bb5649db01215962e21c3fa3c Mon Sep 17 00:00:00 2001 From: Ogulcan Aydogan Date: Mon, 27 Apr 2026 16:13:09 +0100 Subject: [PATCH 2/3] chore: add CHANGELOG entry for PIE ruff rule --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a3dbd81ac5..72ecd1d4666 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#5177](https://github.com/open-telemetry/opentelemetry-python/pull/5177)) - `opentelemetry-api`: Enforce W3C Baggage size limits on outbound propagation in `W3CBaggagePropagator.inject()`. Previously only inbound extraction enforced limits; now inject also caps entries at 180, individual pairs at 4096 bytes, and total header at 8192 bytes per the W3C Baggage spec. The extract path max_pairs limit now counts all size-valid entries rather than only successfully parsed ones. ([#5163](https://github.com/open-telemetry/opentelemetry-python/pull/5163)) +- Enable `PIE` (flake8-pie) ruff rule and fix all violations + ([#5150](https://github.com/open-telemetry/opentelemetry-python/pull/5150)) - `opentelemetry-sdk`: add `additional_properties` support to generated config models via custom `datamodel-codegen` template, enabling plugin/custom component names to flow through typed dataclasses ([#5131](https://github.com/open-telemetry/opentelemetry-python/pull/5131)) - Fix incorrect code example in `create_tracer()` docstring From 8ea69ce16b9c8744c567548ab234e341d617d9e7 Mon Sep 17 00:00:00 2001 From: Ogulcan Aydogan Date: Wed, 6 May 2026 15:12:24 +0100 Subject: [PATCH 3/3] chore: apply ruff format to fix precommit CI Signed-off-by: Ogulcan Aydogan --- .../tests/test_otlp_exporter_mixin.py | 4 ++- .../tests/test_otlp_trace_exporter.py | 21 ++++++++---- .../tests/test_proto_span_exporter.py | 4 ++- .../tests/propagators/test__envcarrier.py | 5 ++- .../tests/propagators/test_propagators.py | 34 ++++--------------- .../test_tracecontexthttptextformat.py | 5 ++- .../tests/util/test__providers.py | 14 +++----- .../tests/error_handler/test_error_handler.py | 6 ++-- .../tests/trace/test_span_processor.py | 2 +- 9 files changed, 42 insertions(+), 53 deletions(-) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py index 70ded37c6bf..cc39cb74b47 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_exporter_mixin.py @@ -180,7 +180,9 @@ def setUp(self): self.span = _Span( "a", context=Mock( - trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 + trace_state={"a": "b", "c": "d"}, + span_id=10217189687419569865, + trace_id=67545097771067222548457157018666467027, ), ) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py index 7043c7b141b..6fce8a0da97 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py @@ -73,9 +73,8 @@ def setUp(self): self.tracer = tracer_provider.get_tracer(__name__) event_mock = Mock( - timestamp=1591240820506462784, attributes=BoundedAttributes( - attributes={"a": 1, "b": False} - ) + timestamp=1591240820506462784, + attributes=BoundedAttributes(attributes={"a": 1, "b": False}), ) type(event_mock).name = PropertyMock(return_value="a") @@ -83,7 +82,9 @@ def setUp(self): self.span = _Span( "a", context=Mock( - trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 + trace_state={"a": "b", "c": "d"}, + span_id=10217189687419569865, + trace_id=67545097771067222548457157018666467027, ), resource=SDKResource({"a": 1, "b": False}), parent=Mock(span_id=12345), @@ -110,7 +111,9 @@ def setUp(self): self.span2 = _Span( "b", context=Mock( - trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 + trace_state={"a": "b", "c": "d"}, + span_id=10217189687419569865, + trace_id=67545097771067222548457157018666467027, ), resource=SDKResource({"a": 2, "b": False}), parent=Mock(span_id=12345), @@ -122,7 +125,9 @@ def setUp(self): self.span3 = _Span( "c", context=Mock( - trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 + trace_state={"a": "b", "c": "d"}, + span_id=10217189687419569865, + trace_id=67545097771067222548457157018666467027, ), resource=SDKResource({"a": 1, "b": False}), parent=Mock(span_id=12345), @@ -769,7 +774,9 @@ def _create_span_with_status(status: SDKStatus): span = _Span( "a", context=Mock( - trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 + trace_state={"a": "b", "c": "d"}, + span_id=10217189687419569865, + trace_id=67545097771067222548457157018666467027, ), parent=Mock(span_id=12345), instrumentation_scope=InstrumentationScope( diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py index a2c5488a8f2..3b4c2fa8610 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py @@ -54,7 +54,9 @@ BASIC_SPAN = _Span( "abc", context=Mock( - trace_state={"a": "b", "c": "d"}, span_id=10217189687419569865, trace_id=67545097771067222548457157018666467027 + trace_state={"a": "b", "c": "d"}, + span_id=10217189687419569865, + trace_id=67545097771067222548457157018666467027, ), ) diff --git a/opentelemetry-api/tests/propagators/test__envcarrier.py b/opentelemetry-api/tests/propagators/test__envcarrier.py index f97cf046526..3c667fc4a5d 100644 --- a/opentelemetry-api/tests/propagators/test__envcarrier.py +++ b/opentelemetry-api/tests/propagators/test__envcarrier.py @@ -386,7 +386,10 @@ def test_fields(self, mock_get_current_span, mock_invalid_span_context): return_value=Mock( **{ "get_span_context.return_value": Mock( - trace_id=1, span_id=2, trace_flags=3, trace_state=TraceState([("a", "b")]) + trace_id=1, + span_id=2, + trace_flags=3, + trace_state=TraceState([("a", "b")]), ) } ) diff --git a/opentelemetry-api/tests/propagators/test_propagators.py b/opentelemetry-api/tests/propagators/test_propagators.py index 7074d5c162c..98509eeb441 100644 --- a/opentelemetry-api/tests/propagators/test_propagators.py +++ b/opentelemetry-api/tests/propagators/test_propagators.py @@ -90,34 +90,12 @@ def test_non_default_propagators( ): mock_entry_points.configure_mock( side_effect=[ - [ - Mock( - **{ - "load.return_value": Mock( - return_value="a" - ) - } - ), - ], - [ - Mock( - **{ - "load.return_value": Mock( - return_value="b" - ) - } - ) - ], - [ - Mock( - **{ - "load.return_value": Mock( - return_value="c" - ) - } - ) - ], - ] + [ + Mock(**{"load.return_value": Mock(return_value="a")}), + ], + [Mock(**{"load.return_value": Mock(return_value="b")})], + [Mock(**{"load.return_value": Mock(return_value="c")})], + ] ) def test_propagators(propagators): diff --git a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py index 6be4352152d..7692860100f 100644 --- a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py +++ b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py @@ -237,7 +237,10 @@ def test_fields(self, mock_get_current_span, mock_invalid_span_context): return_value=Mock( **{ "get_span_context.return_value": Mock( - trace_id=1, span_id=2, trace_flags=3, trace_state=TraceState([("a", "b")]) + trace_id=1, + span_id=2, + trace_flags=3, + trace_state=TraceState([("a", "b")]), ) } ) diff --git a/opentelemetry-api/tests/util/test__providers.py b/opentelemetry-api/tests/util/test__providers.py index 5dc4fca3454..c5c841fc81c 100644 --- a/opentelemetry-api/tests/util/test__providers.py +++ b/opentelemetry-api/tests/util/test__providers.py @@ -22,16 +22,10 @@ def test__providers(self, mock_entry_points): mock_entry_points.configure_mock( side_effect=[ - [ - Mock( - **{ - "load.return_value": Mock( - return_value="a" - ) - } - ), - ], - ] + [ + Mock(**{"load.return_value": Mock(return_value="a")}), + ], + ] ) self.assertEqual( diff --git a/opentelemetry-sdk/tests/error_handler/test_error_handler.py b/opentelemetry-sdk/tests/error_handler/test_error_handler.py index aa9d12797db..df04465845c 100644 --- a/opentelemetry-sdk/tests/error_handler/test_error_handler.py +++ b/opentelemetry-sdk/tests/error_handler/test_error_handler.py @@ -44,9 +44,9 @@ class AssertionErrorHandler(ErrorHandler, AssertionError): mock_entry_points.configure_mock( return_value=[ - mock_entry_point_zero_division_error_handler, - mock_entry_point_assertion_error_handler, - ] + mock_entry_point_zero_division_error_handler, + mock_entry_point_assertion_error_handler, + ] ) error = ZeroDivisionError() diff --git a/opentelemetry-sdk/tests/trace/test_span_processor.py b/opentelemetry-sdk/tests/trace/test_span_processor.py index 04734d0fb30..f334ec05408 100644 --- a/opentelemetry-sdk/tests/trace/test_span_processor.py +++ b/opentelemetry-sdk/tests/trace/test_span_processor.py @@ -509,7 +509,7 @@ def test_force_flush_processor_returns_none(self): none_mock = mock.Mock(spec=trace.SpanProcessor) none_mock.force_flush = mock.Mock(return_value=None) - mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 4)] + mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(4)] mocks.insert(0, none_mock) for mock_processor in mocks: