From 88605d87a7474cabeecdf627ad2455f6085a0191 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 60d26683695..928aa429850 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 @@ -561,7 +561,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 50996264a09..07ee49fb04f 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 @@ -184,11 +184,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 c66deeb2d81..5dac0b92737 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 0b07908ec5b..673deff1c38 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -690,7 +690,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: @@ -699,7 +699,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 3bfd0f07e4b..f4a3c44ab5b 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 @@ -580,5 +580,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 28295af8658..14746865f05 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 1b49792c25d37dc2050913f86e983cc2e978479a Mon Sep 17 00:00:00 2001 From: Ogulcan Aydogan Date: Thu, 14 May 2026 11:47:16 +0100 Subject: [PATCH 2/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 07ee49fb04f..3454ae97753 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 @@ -184,7 +184,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: From 3223b134c99adcc2141f237639385366acf7e96d Mon Sep 17 00:00:00 2001 From: Ogulcan Aydogan Date: Thu, 14 May 2026 11:47:23 +0100 Subject: [PATCH 3/3] chore: add changelog fragment for PIE ruff rule Signed-off-by: Ogulcan Aydogan --- .changelog/5150.changed | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changelog/5150.changed diff --git a/.changelog/5150.changed b/.changelog/5150.changed new file mode 100644 index 00000000000..78a29b3f474 --- /dev/null +++ b/.changelog/5150.changed @@ -0,0 +1 @@ +Enable `PIE` (flake8-pie) ruff rule and fix all violations