diff --git a/.changelog/5491.changed b/.changelog/5491.changed new file mode 100644 index 00000000000..c0ea2bd01fd --- /dev/null +++ b/.changelog/5491.changed @@ -0,0 +1 @@ +`opentelemetry-python`: enable Ruff default ruleset and fix auto-fixable lint issues diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c3fa7b7795c..d5cf2f1b9b8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,7 +15,7 @@ repos: args: ["--preview"] - repo: https://github.com/astral-sh/uv-pre-commit # uv version. - rev: 0.6.0 + rev: 0.12.2 hooks: - id: uv-lock args: ["--index-url", "https://pypi.org/simple"] 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 b8be0355246..7bac6f56064 100644 --- a/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/generator.py +++ b/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/generator.py @@ -219,8 +219,7 @@ def _get_module_path(self, proto_file: str) -> str: Python module path (dot-separated) """ transformed = self._transform_proto_path(proto_file) - if transformed.endswith(".py"): - transformed = transformed[:-3] + transformed = transformed.removesuffix(".py") return transformed.replace("/", ".") def _generate_file(self, file_desc: descriptor.FileDescriptorProto) -> str: diff --git a/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/runtime/json_codec.py b/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/runtime/json_codec.py index 72c315d1eaa..69f74ed657f 100644 --- a/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/runtime/json_codec.py +++ b/codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/runtime/json_codec.py @@ -10,6 +10,8 @@ import math import typing +from typing_extensions import Self + T = typing.TypeVar("T") M = typing.TypeVar("M", bound="JsonMessage") @@ -39,7 +41,7 @@ def to_json(self) -> str: return json.dumps(self.to_dict()) @classmethod - def from_json(cls: type[M], data: str | bytes) -> M: + def from_json(cls, data: str | bytes) -> Self: """ Deserialize from a JSON string or bytes. """ @@ -179,7 +181,7 @@ def decode_int64(value: int | str | None, field_name: str) -> int: ) from None -def decode_float(value: float | int | str | None, field_name: str) -> float: +def decode_float(value: float | str | None, field_name: str) -> float: """ Parse float/double from number or string, handling special values. diff --git a/codegen/opentelemetry-codegen-json/tests/test_json_codec.py b/codegen/opentelemetry-codegen-json/tests/test_json_codec.py index aa24f838d51..debb8a07b7a 100644 --- a/codegen/opentelemetry-codegen-json/tests/test_json_codec.py +++ b/codegen/opentelemetry-codegen-json/tests/test_json_codec.py @@ -140,9 +140,7 @@ def test_encode_float(value: float, expected: float | str) -> None: (None, 0.0), ], ) -def test_decode_float( - value: float | int | str | None, expected: float -) -> None: +def test_decode_float(value: float | str | None, expected: float) -> None: result = decode_float(value, "field") if math.isnan(expected): assert math.isnan(result) diff --git a/codegen/opentelemetry-codegen-json/tests/test_protobuf_compatibility.py b/codegen/opentelemetry-codegen-json/tests/test_protobuf_compatibility.py index 16c1852cfbf..75da3ff7fa9 100644 --- a/codegen/opentelemetry-codegen-json/tests/test_protobuf_compatibility.py +++ b/codegen/opentelemetry-codegen-json/tests/test_protobuf_compatibility.py @@ -2,7 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # pylint: skip-file -# ruff: noqa: PLC0415 import base64 from typing import Any diff --git a/codegen/opentelemetry-codegen-json/tests/test_serde.py b/codegen/opentelemetry-codegen-json/tests/test_serde.py index e89453ea6a6..bb5dd460dbc 100644 --- a/codegen/opentelemetry-codegen-json/tests/test_serde.py +++ b/codegen/opentelemetry-codegen-json/tests/test_serde.py @@ -2,7 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # pylint: skip-file -# ruff: noqa: PLC0415 import json import math diff --git a/dev-requirements.txt b/dev-requirements.txt index ece3667626e..fed059cae8a 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -17,4 +17,4 @@ asgiref==3.7.2 psutil==7.2.2 GitPython==3.1.52 pre-commit==3.7.0 -ruff==0.16.0 +ruff==0.16.1 diff --git a/docs/conf.py b/docs/conf.py index 543aa13d3fa..68c8143f1b0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -30,8 +30,8 @@ # "AnyValue" forward reference in opentelemetry.util.types._ExtendedAttributes # resolves when sphinx_autodoc_typehints calls typing.get_type_hints() on # BoundedAttributes (whose __globals__ is the attributes module). Docs-only. -import opentelemetry.attributes # noqa: E402 -from opentelemetry.util.types import AnyValue as _AnyValue # noqa: E402 +import opentelemetry.attributes +from opentelemetry.util.types import AnyValue as _AnyValue opentelemetry.attributes.AnyValue = _AnyValue diff --git a/docs/examples/django/manage.py b/docs/examples/django/manage.py index 2ddd5e8eb93..535a99f0306 100755 --- a/docs/examples/django/manage.py +++ b/docs/examples/django/manage.py @@ -22,7 +22,7 @@ def main(): DjangoInstrumentor().instrument() try: - from django.core.management import ( # noqa: PLC0415 + from django.core.management import ( execute_from_command_line, ) except ImportError as exc: diff --git a/docs/examples/opencensus-exporter-tracer/collector.py b/docs/examples/opencensus-exporter-tracer/collector.py index f1d1025c404..05a712ebaf9 100644 --- a/docs/examples/opencensus-exporter-tracer/collector.py +++ b/docs/examples/opencensus-exporter-tracer/collector.py @@ -15,7 +15,6 @@ span_processor = BatchSpanProcessor(exporter) trace.get_tracer_provider().add_span_processor(span_processor) -with tracer.start_as_current_span("foo"): - with tracer.start_as_current_span("bar"): - with tracer.start_as_current_span("baz"): - print("Hello world from OpenTelemetry Python!") +with tracer.start_as_current_span("foo"), tracer.start_as_current_span("bar"): + with tracer.start_as_current_span("baz"): + print("Hello world from OpenTelemetry Python!") diff --git a/docs/getting_started/tracing_example.py b/docs/getting_started/tracing_example.py index 574b8f3fe7c..d7dc89cc813 100644 --- a/docs/getting_started/tracing_example.py +++ b/docs/getting_started/tracing_example.py @@ -17,7 +17,6 @@ tracer = trace.get_tracer(__name__) -with tracer.start_as_current_span("foo"): - with tracer.start_as_current_span("bar"): - with tracer.start_as_current_span("baz"): - print("Hello world from OpenTelemetry Python!") +with tracer.start_as_current_span("foo"), tracer.start_as_current_span("bar"): + with tracer.start_as_current_span("baz"): + print("Hello world from OpenTelemetry Python!") diff --git a/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/__init__.py b/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/__init__.py index c8cfcc4ca2e..b8f7d7865fd 100644 --- a/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/__init__.py +++ b/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/__init__.py @@ -53,7 +53,7 @@ def _load_http_transport_factory(name: str) -> BaseHTTPTransportFactory: if name in _KNOWN_TRANSPORTS: return _KNOWN_TRANSPORTS[name] # pylint: disable-next=import-outside-toplevel,import-error - from opentelemetry.util._importlib_metadata import ( # noqa: PLC0415 + from opentelemetry.util._importlib_metadata import ( entry_points, ) diff --git a/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_requests.py b/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_requests.py index 9ad205e3f86..a25bad1bb8d 100644 --- a/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_requests.py +++ b/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_requests.py @@ -24,7 +24,7 @@ @functools.cache def _get_connection_error_types() -> tuple[type[Exception], ...]: # pylint: disable-next=import-outside-toplevel - import requests.exceptions # noqa: PLC0415 + import requests.exceptions return ( requests.exceptions.ConnectionError, @@ -71,7 +71,7 @@ def __init__( **kwargs: Any, ) -> None: # pylint: disable-next=import-outside-toplevel - import requests # noqa: PLC0415 + import requests self._session = session if session is not None else requests.Session() self._session.verify = verify diff --git a/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_urllib3.py b/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_urllib3.py index 2f2fd72954f..92de7831a9b 100644 --- a/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_urllib3.py +++ b/exporter/opentelemetry-exporter-http-transport/src/opentelemetry/exporter/http/transport/_urllib3.py @@ -24,7 +24,7 @@ @functools.cache def _get_connection_error_types() -> tuple[type[Exception], ...]: # pylint: disable-next=import-outside-toplevel - import urllib3.exceptions # noqa: PLC0415 + import urllib3.exceptions types: list[type[Exception]] = [ urllib3.exceptions.ConnectionError, @@ -75,7 +75,7 @@ def __init__( **kwargs: Any, ) -> None: # pylint: disable-next=import-outside-toplevel - import urllib3 # noqa: PLC0415 + import urllib3 pool_kwargs: dict[str, object] = { "retries": urllib3.Retry(0, redirect=False), @@ -104,7 +104,7 @@ def request( data: bytes | None = None, ) -> BaseHTTPResult: # pylint: disable-next=import-outside-toplevel - import urllib3 # noqa: PLC0415 + import urllib3 try: response = self._pool.request( diff --git a/exporter/opentelemetry-exporter-opencensus/tests/test_otcollector_trace_exporter.py b/exporter/opentelemetry-exporter-opencensus/tests/test_otcollector_trace_exporter.py index 077531ec9f8..8a8cd96e7fb 100644 --- a/exporter/opentelemetry-exporter-opencensus/tests/test_otcollector_trace_exporter.py +++ b/exporter/opentelemetry-exporter-opencensus/tests/test_otcollector_trace_exporter.py @@ -307,15 +307,13 @@ def test_export(self): # pylint: disable=unsubscriptable-object export_arg = mock_export.call_args[0] service_request = next(export_arg[0]) - output_spans = getattr(service_request, "spans") - output_node = getattr(service_request, "node") + output_spans = service_request.spans + output_node = service_request.node self.assertEqual(len(output_spans), 1) - self.assertIsNotNone(getattr(output_node, "library_info")) - self.assertIsNotNone(getattr(output_node, "service_info")) - output_identifier = getattr(output_node, "identifier") - self.assertEqual( - getattr(output_identifier, "host_name"), "testHostName" - ) + self.assertIsNotNone(output_node.library_info) + self.assertIsNotNone(output_node.service_info) + output_identifier = output_node.identifier + self.assertEqual(output_identifier.host_name, "testHostName") def test_export_service_name(self): trace_api.set_tracer_provider( diff --git a/exporter/opentelemetry-exporter-otlp-common/tests/test_aggregation.py b/exporter/opentelemetry-exporter-otlp-common/tests/test_aggregation.py index 4883eefb3e2..9706689b51f 100644 --- a/exporter/opentelemetry-exporter-otlp-common/tests/test_aggregation.py +++ b/exporter/opentelemetry-exporter-otlp-common/tests/test_aggregation.py @@ -84,12 +84,14 @@ def test_temporality_lowmemory_env(self): self.assertEqual(result[instrument_class], expected) def test_temporality_invalid_env_logs_warning(self): - with patch.dict( - "os.environ", - {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "INVALID"}, + with ( + patch.dict( + "os.environ", + {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "INVALID"}, + ), + self.assertLogs(_AGGREGATION_LOGGER_NAME, level="WARNING"), ): - with self.assertLogs(_AGGREGATION_LOGGER_NAME, level="WARNING"): - result = _get_temporality(None) + result = _get_temporality(None) self.assertEqual( result[Counter], AggregationTemporality.CUMULATIVE, 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 f7fa0b8697d..9496e598ca3 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 @@ -560,7 +560,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..47764de5fd6 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 @@ -26,7 +26,7 @@ from opentelemetry.exporter.otlp.proto.common.trace_encoder import ( encode_spans, ) -from opentelemetry.exporter.otlp.proto.grpc.exporter import ( # noqa: F401 +from opentelemetry.exporter.otlp.proto.grpc.exporter import ( _RETRYABLE_ERROR_CODES, InvalidCompressionValueException, OTLPExporterMixin, @@ -184,11 +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 64cd091a6c1..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,12 +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") @@ -86,14 +82,12 @@ 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 +111,12 @@ 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 +125,12 @@ 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 +774,11 @@ 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/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py index 7020beb7f32..728a5066b2f 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py @@ -46,7 +46,7 @@ _load_session_from_envvar, ) from opentelemetry.metrics import MeterProvider -from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ( # noqa: F401 +from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ( ExportMetricsServiceRequest, ) from opentelemetry.proto.common.v1.common_pb2 import ( # noqa: F401 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 fa8b5fc1f44..4e4918b37a5 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 @@ -59,11 +59,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/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py b/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py index 12a6755337f..a87100eb4e1 100644 --- a/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py +++ b/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py @@ -483,7 +483,7 @@ def _collect_data_points( return label_keys, label_rows, values # pylint: disable=no-self-use - def _check_value(self, value: int | float | str | Sequence) -> str: + def _check_value(self, value: float | str | Sequence) -> str: """Check the label value and return is appropriate representation""" if not isinstance(value, str): return dumps(value, default=str) 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/src/opentelemetry/exporter/zipkin/proto/http/v2/gen/zipkin_pb2.py b/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/gen/zipkin_pb2.py index 7b578febc10..2d12c20888c 100644 --- a/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/gen/zipkin_pb2.py +++ b/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/gen/zipkin_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: zipkin.proto """Generated protocol buffer code.""" @@ -6,6 +5,7 @@ from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database + # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() 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/src/opentelemetry/_logs/__init__.py b/opentelemetry-api/src/opentelemetry/_logs/__init__.py index 1c4dfee1335..cff2b8ca609 100644 --- a/opentelemetry-api/src/opentelemetry/_logs/__init__.py +++ b/opentelemetry-api/src/opentelemetry/_logs/__init__.py @@ -35,13 +35,13 @@ from opentelemetry._logs.severity import SeverityNumber __all__ = [ + "LogRecord", "Logger", "LoggerProvider", - "LogRecord", "NoOpLogger", "NoOpLoggerProvider", + "SeverityNumber", "get_logger", "get_logger_provider", "set_logger_provider", - "SeverityNumber", ] diff --git a/opentelemetry-api/src/opentelemetry/context/__init__.py b/opentelemetry-api/src/opentelemetry/context/__init__.py index 80174f66b5e..1dfecd55cff 100644 --- a/opentelemetry-api/src/opentelemetry/context/__init__.py +++ b/opentelemetry-api/src/opentelemetry/context/__init__.py @@ -9,7 +9,7 @@ from uuid import uuid4 # pylint: disable=wrong-import-position -from opentelemetry.context.context import Context, _RuntimeContext # noqa +from opentelemetry.context.context import Context, _RuntimeContext from opentelemetry.context.contextvars_context import ContextVarsRuntimeContext from opentelemetry.environment_variables import OTEL_PYTHON_CONTEXT @@ -27,7 +27,7 @@ def _load_runtime_context() -> _RuntimeContext: return ContextVarsRuntimeContext() # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.util._importlib_metadata import ( # noqa: PLC0415 + from opentelemetry.util._importlib_metadata import ( entry_points, ) diff --git a/opentelemetry-api/src/opentelemetry/metrics/__init__.py b/opentelemetry-api/src/opentelemetry/metrics/__init__.py index b39a3de15ff..b25a60e9177 100644 --- a/opentelemetry-api/src/opentelemetry/metrics/__init__.py +++ b/opentelemetry-api/src/opentelemetry/metrics/__init__.py @@ -91,31 +91,31 @@ obj.__module__ = __name__ __all__ = [ + "Asynchronous", "CallbackOptions", - "MeterProvider", - "NoOpMeterProvider", - "Meter", + "CallbackT", "Counter", - "_Gauge", - "_NoOpGauge", - "NoOpCounter", - "UpDownCounter", - "NoOpUpDownCounter", "Histogram", + "Instrument", + "Meter", + "MeterProvider", + "NoOpCounter", "NoOpHistogram", - "ObservableCounter", + "NoOpMeter", + "NoOpMeterProvider", "NoOpObservableCounter", - "ObservableUpDownCounter", - "Instrument", - "Synchronous", - "Asynchronous", "NoOpObservableGauge", - "ObservableGauge", "NoOpObservableUpDownCounter", + "NoOpUpDownCounter", + "ObservableCounter", + "ObservableGauge", + "ObservableUpDownCounter", + "Observation", + "Synchronous", + "UpDownCounter", + "_Gauge", + "_NoOpGauge", "get_meter", "get_meter_provider", "set_meter_provider", - "Observation", - "CallbackT", - "NoOpMeter", ] diff --git a/opentelemetry-api/src/opentelemetry/metrics/_internal/instrument.py b/opentelemetry-api/src/opentelemetry/metrics/_internal/instrument.py index 79bdfa4e673..d60b8f7a4c9 100644 --- a/opentelemetry-api/src/opentelemetry/metrics/_internal/instrument.py +++ b/opentelemetry-api/src/opentelemetry/metrics/_internal/instrument.py @@ -162,7 +162,7 @@ class Counter(Synchronous): @abstractmethod def add( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -189,7 +189,7 @@ def __init__( def add( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -199,7 +199,7 @@ def add( class _ProxyCounter(_ProxyInstrument[Counter], Counter): def add( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -220,7 +220,7 @@ class UpDownCounter(Synchronous): @abstractmethod def add( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -251,7 +251,7 @@ def __init__( def add( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -261,7 +261,7 @@ def add( class _ProxyUpDownCounter(_ProxyInstrument[UpDownCounter], UpDownCounter): def add( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -373,7 +373,7 @@ def __init__( @abstractmethod def record( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -412,7 +412,7 @@ def __init__( def record( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -434,7 +434,7 @@ def __init__( def record( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -496,7 +496,7 @@ class Gauge(Synchronous): @abstractmethod def set( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -527,7 +527,7 @@ def __init__( def set( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: @@ -540,7 +540,7 @@ class _ProxyGauge( ): def set( self, - amount: int | float, + amount: float, attributes: Attributes | None = None, context: Context | None = None, ) -> None: diff --git a/opentelemetry-api/src/opentelemetry/metrics/_internal/observation.py b/opentelemetry-api/src/opentelemetry/metrics/_internal/observation.py index 26f2e07914b..0ee7a311369 100644 --- a/opentelemetry-api/src/opentelemetry/metrics/_internal/observation.py +++ b/opentelemetry-api/src/opentelemetry/metrics/_internal/observation.py @@ -19,7 +19,7 @@ class Observation: def __init__( self, - value: int | float, + value: float, attributes: Attributes = None, context: Context | None = None, ) -> None: diff --git a/opentelemetry-api/src/opentelemetry/propagate/__init__.py b/opentelemetry-api/src/opentelemetry/propagate/__init__.py index 7ef176c2485..ca0a1faffb6 100644 --- a/opentelemetry-api/src/opentelemetry/propagate/__init__.py +++ b/opentelemetry-api/src/opentelemetry/propagate/__init__.py @@ -114,12 +114,12 @@ def _load_propagators() -> textmap.TextMapPropagator: configured = environ.get(OTEL_PROPAGATORS) if not configured: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.baggage.propagation import ( # noqa: PLC0415 + from opentelemetry.baggage.propagation import ( W3CBaggagePropagator, ) # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.trace.propagation.tracecontext import ( # noqa: PLC0415 + from opentelemetry.trace.propagation.tracecontext import ( TraceContextTextMapPropagator, ) @@ -128,7 +128,7 @@ def _load_propagators() -> textmap.TextMapPropagator: ) # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.util._importlib_metadata import ( # noqa: PLC0415 + from opentelemetry.util._importlib_metadata import ( entry_points, ) diff --git a/opentelemetry-api/src/opentelemetry/trace/__init__.py b/opentelemetry-api/src/opentelemetry/trace/__init__.py index aec4bf4fec5..efddbaa66d3 100644 --- a/opentelemetry-api/src/opentelemetry/trace/__init__.py +++ b/opentelemetry-api/src/opentelemetry/trace/__init__.py @@ -645,23 +645,23 @@ def use_span( "INVALID_SPAN_CONTEXT", "INVALID_SPAN_ID", "INVALID_TRACE_ID", - "NonRecordingSpan", "Link", + "NonRecordingSpan", "Span", "SpanContext", "SpanKind", + "Status", + "StatusCode", "TraceFlags", "TraceState", - "TracerProvider", "Tracer", + "TracerProvider", "format_span_id", "format_trace_id", "get_current_span", "get_tracer", "get_tracer_provider", - "set_tracer_provider", "set_span_in_context", + "set_tracer_provider", "use_span", - "Status", - "StatusCode", ] diff --git a/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py b/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py index 7e685f595d7..9822c2e74f7 100644 --- a/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py +++ b/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py @@ -52,12 +52,12 @@ def entry_points(**params) -> EntryPoints: __all__ = [ - "entry_points", - "version", + "Distribution", "EntryPoint", "EntryPoints", - "requires", - "Distribution", - "distributions", "PackageNotFoundError", + "distributions", + "entry_points", + "requires", + "version", ] diff --git a/opentelemetry-api/src/opentelemetry/util/_providers.py b/opentelemetry-api/src/opentelemetry/util/_providers.py index 37cc823e395..e77e5e45498 100644 --- a/opentelemetry-api/src/opentelemetry/util/_providers.py +++ b/opentelemetry-api/src/opentelemetry/util/_providers.py @@ -18,7 +18,7 @@ def _load_provider( provider_environment_variable: str, provider: str ) -> Provider: # type: ignore[type-var] # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.util._importlib_metadata import ( # noqa: PLC0415 + from opentelemetry.util._importlib_metadata import ( entry_points, ) diff --git a/opentelemetry-api/tests/logs/test_logger_provider.py b/opentelemetry-api/tests/logs/test_logger_provider.py index 71ba26a41e3..809c095113f 100644 --- a/opentelemetry-api/tests/logs/test_logger_provider.py +++ b/opentelemetry-api/tests/logs/test_logger_provider.py @@ -38,15 +38,15 @@ def test_get_logger_provider(self): logs_internal._LOGGER_PROVIDER = None - with patch.dict( - "os.environ", - {_OTEL_PYTHON_LOGGER_PROVIDER: "test_logger_provider"}, + with ( + patch.dict( + "os.environ", + {_OTEL_PYTHON_LOGGER_PROVIDER: "test_logger_provider"}, + ), + patch("opentelemetry._logs._internal._load_provider", Mock()), ): - with patch("opentelemetry._logs._internal._load_provider", Mock()): - with patch( - "opentelemetry._logs._internal.cast", - Mock(**{"return_value": "test_logger_provider"}), - ): - self.assertEqual( - get_logger_provider(), "test_logger_provider" - ) + with patch( + "opentelemetry._logs._internal.cast", + 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..02132b84181 100644 --- a/opentelemetry-api/tests/metrics/test_meter_provider.py +++ b/opentelemetry-api/tests/metrics/test_meter_provider.py @@ -88,15 +88,17 @@ def test_get_meter_provider(reset_meter_provider): metrics._METER_PROVIDER = None - with patch.dict( - "os.environ", {OTEL_PYTHON_METER_PROVIDER: "test_meter_provider"} + with ( + patch.dict( + "os.environ", {OTEL_PYTHON_METER_PROVIDER: "test_meter_provider"} + ), + patch("opentelemetry.metrics._internal._load_provider", Mock()), + patch( + "opentelemetry.metrics._internal.cast", + Mock(return_value="test_meter_provider"), + ), ): - with patch("opentelemetry.metrics._internal._load_provider", Mock()): - with patch( - "opentelemetry.metrics._internal.cast", - Mock(**{"return_value": "test_meter_provider"}), - ): - assert get_meter_provider() == "test_meter_provider" + assert get_meter_provider() == "test_meter_provider" class TestGetMeter(TestCase): diff --git a/opentelemetry-api/tests/propagators/test__envcarrier.py b/opentelemetry-api/tests/propagators/test__envcarrier.py index ca62bd5fd3a..900d8aebdd1 100644 --- a/opentelemetry-api/tests/propagators/test__envcarrier.py +++ b/opentelemetry-api/tests/propagators/test__envcarrier.py @@ -446,18 +446,16 @@ def test_case_handling(self): def test_fields(self, mock_get_current_span, mock_invalid_span_context): """Test that propagator.fields matches injected keys.""" # pylint: disable=import-outside-toplevel - from opentelemetry.trace.span import TraceState # noqa: PLC0415 + from opentelemetry.trace.span import TraceState mock_get_current_span.configure_mock( 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")]), ) } ) @@ -569,7 +567,7 @@ class TestEnvironmentCarrierWithCompositePropagator(unittest.TestCase): def setUp(self): # pylint: disable=import-outside-toplevel - from opentelemetry.propagators.composite import ( # noqa: PLC0415 + from opentelemetry.propagators.composite import ( CompositePropagator, ) diff --git a/opentelemetry-api/tests/propagators/test_propagators.py b/opentelemetry-api/tests/propagators/test_propagators.py index a4cc9739ee8..ce24cc16c0f 100644 --- a/opentelemetry-api/tests/propagators/test_propagators.py +++ b/opentelemetry-api/tests/propagators/test_propagators.py @@ -30,11 +30,11 @@ def test_propagators(propagators): ) mock_compositehttppropagator.configure_mock( - **{"side_effect": test_propagators} + side_effect=test_propagators ) # pylint: disable=import-outside-toplevel - import opentelemetry.propagate # noqa: PLC0415 + import opentelemetry.propagate reload(opentelemetry.propagate) @@ -51,11 +51,11 @@ def test_propagators(propagators): ) mock_compositehttppropagator.configure_mock( - **{"side_effect": test_propagators} + side_effect=test_propagators ) # pylint: disable=import-outside-toplevel - import opentelemetry.propagate # noqa: PLC0415 + import opentelemetry.propagate reload(opentelemetry.propagate) @@ -74,11 +74,11 @@ def test_propagators(propagators): ) mock_compositehttppropagator.configure_mock( - **{"side_effect": test_propagators} + side_effect=test_propagators ) # pylint: disable=import-outside-toplevel - import opentelemetry.propagate # noqa: PLC0415 + import opentelemetry.propagate reload(opentelemetry.propagate) @@ -89,48 +89,24 @@ def test_non_default_propagators( self, mock_entry_points, mock_compositehttppropagator ): 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"} - ) - } - ) - ], - ] - } + 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")})], + ] ) 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 - import opentelemetry.propagate # noqa: PLC0415 + import opentelemetry.propagate reload(opentelemetry.propagate) @@ -140,7 +116,7 @@ def test_propagators(propagators): def test_composite_propagators_error(self): with self.assertRaises(ValueError) as cm: # pylint: disable=import-outside-toplevel - import opentelemetry.propagate # noqa: PLC0415 + import opentelemetry.propagate reload(opentelemetry.propagate) diff --git a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py index 87d410c5bee..7692860100f 100644 --- a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py +++ b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py @@ -237,12 +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 73deea30484..c5c841fc81c 100644 --- a/opentelemetry-api/tests/util/test__providers.py +++ b/opentelemetry-api/tests/util/test__providers.py @@ -21,19 +21,11 @@ def test__providers(self, mock_entry_points): reload(_providers) mock_entry_points.configure_mock( - **{ - "side_effect": [ - [ - Mock( - **{ - "load.return_value": Mock( - **{"return_value": "a"} - ) - } - ), - ], - ] - } + side_effect=[ + [ + Mock(**{"load.return_value": Mock(return_value="a")}), + ], + ] ) self.assertEqual( diff --git a/opentelemetry-configuration/src/opentelemetry/configuration/_logger_provider.py b/opentelemetry-configuration/src/opentelemetry/configuration/_logger_provider.py index 97deff88314..ba0118bba78 100644 --- a/opentelemetry-configuration/src/opentelemetry/configuration/_logger_provider.py +++ b/opentelemetry-configuration/src/opentelemetry/configuration/_logger_provider.py @@ -69,10 +69,10 @@ def _create_otlp_http_log_exporter( """Create an OTLP HTTP log exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.exporter.otlp.proto.http import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.http import ( # type: ignore[import-untyped] Compression, ) - from opentelemetry.exporter.otlp.proto.http._log_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.http._log_exporter import ( # type: ignore[import-untyped] OTLPLogExporter, ) except ImportError as exc: @@ -101,9 +101,9 @@ def _create_otlp_grpc_log_exporter( """Create an OTLP gRPC log exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - import grpc # type: ignore[import-untyped] # noqa: PLC0415 + import grpc # type: ignore[import-untyped] - from opentelemetry.exporter.otlp.proto.grpc._log_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.grpc._log_exporter import ( # type: ignore[import-untyped] OTLPLogExporter, ) except ImportError as exc: @@ -130,7 +130,7 @@ def _create_otlp_file_development_log_exporter( """Create an OTLP file (JSON Lines) log exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.exporter.otlp.json.file._log_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.json.file._log_exporter import ( # type: ignore[import-untyped] FileLogExporter, ) except ImportError as exc: diff --git a/opentelemetry-configuration/src/opentelemetry/configuration/_meter_provider.py b/opentelemetry-configuration/src/opentelemetry/configuration/_meter_provider.py index 23db41f2078..7c13e19c5d7 100644 --- a/opentelemetry-configuration/src/opentelemetry/configuration/_meter_provider.py +++ b/opentelemetry-configuration/src/opentelemetry/configuration/_meter_provider.py @@ -286,10 +286,10 @@ def _create_otlp_http_metric_exporter( """Create an OTLP HTTP metric exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.exporter.otlp.proto.http import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.http import ( # type: ignore[import-untyped] Compression, ) - from opentelemetry.exporter.otlp.proto.http.metric_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.http.metric_exporter import ( # type: ignore[import-untyped] OTLPMetricExporter, ) except ImportError as exc: @@ -324,9 +324,9 @@ def _create_otlp_grpc_metric_exporter( """Create an OTLP gRPC metric exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - import grpc # type: ignore[import-untyped] # noqa: PLC0415 + import grpc # type: ignore[import-untyped] - from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import ( # type: ignore[import-untyped] OTLPMetricExporter, ) except ImportError as exc: @@ -359,7 +359,7 @@ def _create_otlp_file_development_metric_exporter( """Create an OTLP file (JSON Lines) metric exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.exporter.otlp.json.file.metric_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.json.file.metric_exporter import ( # type: ignore[import-untyped] FileMetricExporter, ) except ImportError as exc: @@ -456,7 +456,7 @@ def _create_prometheus_metric_reader( """ try: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.exporter.prometheus import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.prometheus import ( # type: ignore[import-untyped] PrometheusMetricReader, start_http_server, ) diff --git a/opentelemetry-configuration/src/opentelemetry/configuration/_tracer_provider.py b/opentelemetry-configuration/src/opentelemetry/configuration/_tracer_provider.py index c65b659f4c2..5871f5b0bb0 100644 --- a/opentelemetry-configuration/src/opentelemetry/configuration/_tracer_provider.py +++ b/opentelemetry-configuration/src/opentelemetry/configuration/_tracer_provider.py @@ -112,10 +112,10 @@ def _create_otlp_http_span_exporter( """Create an OTLP HTTP span exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.exporter.otlp.proto.http import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.http import ( # type: ignore[import-untyped] Compression, ) - from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( # type: ignore[import-untyped] OTLPSpanExporter, ) except ImportError as exc: @@ -144,9 +144,9 @@ def _create_otlp_grpc_span_exporter( """Create an OTLP gRPC span exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - import grpc # type: ignore[import-untyped] # noqa: PLC0415 + import grpc # type: ignore[import-untyped] - from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import ( # type: ignore[import-untyped] OTLPSpanExporter, ) except ImportError as exc: @@ -173,7 +173,7 @@ def _create_otlp_file_development_span_exporter( """Create an OTLP file (JSON Lines) span exporter from config.""" try: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.exporter.otlp.json.file.trace_exporter import ( # type: ignore[import-untyped] # noqa: PLC0415 + from opentelemetry.exporter.otlp.json.file.trace_exporter import ( # type: ignore[import-untyped] FileSpanExporter, ) except ImportError as exc: diff --git a/opentelemetry-configuration/src/opentelemetry/configuration/file/__init__.py b/opentelemetry-configuration/src/opentelemetry/configuration/file/__init__.py index 2c8c4ba48e6..abcda17e2b7 100644 --- a/opentelemetry-configuration/src/opentelemetry/configuration/file/__init__.py +++ b/opentelemetry-configuration/src/opentelemetry/configuration/file/__init__.py @@ -41,18 +41,18 @@ from opentelemetry.configuration.file._loader import load_config_file __all__ = [ - "load_config_file", - "configure_sdk", - "substitute_env_vars", "ConfigurationError", "MissingDependencyError", - "create_resource", - "create_propagator", - "configure_propagator", - "create_logger_provider", "configure_logger_provider", - "create_tracer_provider", + "configure_meter_provider", + "configure_propagator", + "configure_sdk", "configure_tracer_provider", + "create_logger_provider", "create_meter_provider", - "configure_meter_provider", + "create_propagator", + "create_resource", + "create_tracer_provider", + "load_config_file", + "substitute_env_vars", ] diff --git a/opentelemetry-configuration/tests/test_common.py b/opentelemetry-configuration/tests/test_common.py index b4a9cc4745e..bebe875e3b7 100644 --- a/opentelemetry-configuration/tests/test_common.py +++ b/opentelemetry-configuration/tests/test_common.py @@ -103,24 +103,28 @@ def test_returns_loaded_class(self): self.assertIs(result, mock_class) def test_raises_when_not_found(self): - with patch( - "opentelemetry.configuration._common.entry_points", - return_value=[], + with ( + patch( + "opentelemetry.configuration._common.entry_points", + return_value=[], + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - load_entry_point("some_group", "missing") + load_entry_point("some_group", "missing") self.assertIn("missing", str(ctx.exception)) self.assertIn("some_group", str(ctx.exception)) def test_wraps_load_exception_in_configuration_error(self): mock_ep = MagicMock() mock_ep.load.side_effect = ImportError("bad import") - with patch( - "opentelemetry.configuration._common.entry_points", - return_value=[mock_ep], + with ( + patch( + "opentelemetry.configuration._common.entry_points", + return_value=[mock_ep], + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - load_entry_point("some_group", "some_name") + load_entry_point("some_group", "some_name") self.assertIn("bad import", str(ctx.exception)) def test_instantiation_error_not_wrapped(self): diff --git a/opentelemetry-configuration/tests/test_logger_provider.py b/opentelemetry-configuration/tests/test_logger_provider.py index 4aadcd1a104..234c451baab 100644 --- a/opentelemetry-configuration/tests/test_logger_provider.py +++ b/opentelemetry-configuration/tests/test_logger_provider.py @@ -239,56 +239,64 @@ def test_plugin_log_exporter_loaded_via_entry_point(self): self.assertIs(result, mock_exporter) def test_unknown_log_exporter_raises_configuration_error(self): - with patch( - "opentelemetry.configuration._common.entry_points", - return_value=[], + with ( + patch( + "opentelemetry.configuration._common.entry_points", + return_value=[], + ), + self.assertRaises(ConfigurationError), ): - with self.assertRaises(ConfigurationError): - # pylint: disable=unexpected-keyword-arg - _create_log_record_exporter( - LogRecordExporterConfig(no_such_exporter={}) - ) + # pylint: disable=unexpected-keyword-arg + _create_log_record_exporter( + LogRecordExporterConfig(no_such_exporter={}) + ) def test_otlp_http_missing_package_raises(self): config = LogRecordExporterConfig( otlp_http=OtlpHttpExporterConfig(endpoint="http://localhost:4318") ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.proto.http": None, - "opentelemetry.exporter.otlp.proto.http._log_exporter": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.proto.http": None, + "opentelemetry.exporter.otlp.proto.http._log_exporter": None, + }, + ), + self.assertRaises(ConfigurationError), ): - with self.assertRaises(ConfigurationError): - _create_log_record_exporter(config) + _create_log_record_exporter(config) def test_otlp_grpc_missing_package_raises(self): config = LogRecordExporterConfig( otlp_grpc=OtlpGrpcExporterConfig(endpoint="http://localhost:4317") ) - with patch.dict( - sys.modules, - { - "grpc": None, - "opentelemetry.exporter.otlp.proto.grpc._log_exporter": None, - }, + with ( + patch.dict( + sys.modules, + { + "grpc": None, + "opentelemetry.exporter.otlp.proto.grpc._log_exporter": None, + }, + ), + self.assertRaises(ConfigurationError), ): - with self.assertRaises(ConfigurationError): - _create_log_record_exporter(config) + _create_log_record_exporter(config) def test_otlp_file_development_missing_package_raises(self): config = LogRecordExporterConfig( otlp_file_development=ExperimentalOtlpFileExporterConfig() ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.json.file._log_exporter": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.json.file._log_exporter": None, + }, + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - _create_log_record_exporter(config) + _create_log_record_exporter(config) self.assertIn( "opentelemetry-exporter-otlp-json-file", str(ctx.exception) ) diff --git a/opentelemetry-configuration/tests/test_meter_provider.py b/opentelemetry-configuration/tests/test_meter_provider.py index 691df236377..0bc98f025d2 100644 --- a/opentelemetry-configuration/tests/test_meter_provider.py +++ b/opentelemetry-configuration/tests/test_meter_provider.py @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 # Tests access private members of SDK classes to assert correct configuration. -# pylint: disable=protected-access +# pylint: disable=protected-access,too-many-lines import os import sys @@ -242,15 +242,17 @@ def test_otlp_http_missing_package_raises(self): config = self._make_periodic_config( PushMetricExporterConfig(otlp_http=OtlpHttpMetricExporterConfig()) ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.proto.http.metric_exporter": None, - "opentelemetry.exporter.otlp.proto.http": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.proto.http.metric_exporter": None, + "opentelemetry.exporter.otlp.proto.http": None, + }, + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - create_meter_provider(config) + create_meter_provider(config) self.assertIn("otlp-proto-http", str(ctx.exception)) def test_otlp_http_created_with_endpoint(self): @@ -315,15 +317,17 @@ def test_otlp_grpc_missing_package_raises(self): config = self._make_periodic_config( PushMetricExporterConfig(otlp_grpc=OtlpGrpcMetricExporterConfig()) ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.proto.grpc.metric_exporter": None, - "grpc": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.proto.grpc.metric_exporter": None, + "grpc": None, + }, + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - create_meter_provider(config) + create_meter_provider(config) self.assertIn("otlp-proto-grpc", str(ctx.exception)) def test_otlp_file_development_missing_package_raises(self): @@ -332,14 +336,16 @@ def test_otlp_file_development_missing_package_raises(self): otlp_file_development=ExperimentalOtlpFileMetricExporterConfig() ) ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.json.file.metric_exporter": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.json.file.metric_exporter": None, + }, + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - create_meter_provider(config) + create_meter_provider(config) self.assertIn( "opentelemetry-exporter-otlp-json-file", str(ctx.exception) ) diff --git a/opentelemetry-configuration/tests/test_resource.py b/opentelemetry-configuration/tests/test_resource.py index c2147df09c8..b93b1a7b884 100644 --- a/opentelemetry-configuration/tests/test_resource.py +++ b/opentelemetry-configuration/tests/test_resource.py @@ -515,12 +515,14 @@ def test_container_detector_not_run_when_detectors_list_empty(self): def test_container_detector_raises_when_package_missing(self): """ConfigurationError is raised when the contrib entry point is not found.""" - with patch( - "opentelemetry.configuration._common.entry_points", - return_value=[], + with ( + patch( + "opentelemetry.configuration._common.entry_points", + return_value=[], + ), + self.assertRaises(ConfigurationError), ): - with self.assertRaises(ConfigurationError): - create_resource(self._config_with_container()) + create_resource(self._config_with_container()) def test_container_detector_uses_contrib_when_available(self): """When the contrib entry point is registered, container.id is detected.""" @@ -659,9 +661,11 @@ def test_unknown_detector_raises_configuration_error(self): detectors=[ExperimentalResourceDetector(no_such_detector={})] ) ) - with patch( - "opentelemetry.configuration._common.entry_points", - return_value=[], + with ( + patch( + "opentelemetry.configuration._common.entry_points", + return_value=[], + ), + self.assertRaises(ConfigurationError), ): - with self.assertRaises(ConfigurationError): - create_resource(config) + create_resource(config) diff --git a/opentelemetry-configuration/tests/test_sdk.py b/opentelemetry-configuration/tests/test_sdk.py index 58ea84d2c06..d435ea6edb4 100644 --- a/opentelemetry-configuration/tests/test_sdk.py +++ b/opentelemetry-configuration/tests/test_sdk.py @@ -109,7 +109,7 @@ def test_disabled_skips_everything( @patch("opentelemetry.configuration._sdk.create_resource") def test_absent_sections_pass_none( self, - mock_create_resource, # noqa: ARG002 + mock_create_resource, mock_tracer, mock_meter, mock_logger, diff --git a/opentelemetry-configuration/tests/test_tracer_provider.py b/opentelemetry-configuration/tests/test_tracer_provider.py index 492f0a83d0c..aa04f64d230 100644 --- a/opentelemetry-configuration/tests/test_tracer_provider.py +++ b/opentelemetry-configuration/tests/test_tracer_provider.py @@ -295,13 +295,15 @@ def test_user_defined_sampler_loaded_via_entry_point(self): self.assertIs(provider.sampler, mock_sampler) def test_user_defined_sampler_not_found_raises_configuration_error(self): - with patch( - "opentelemetry.configuration._common.entry_points", - return_value=[], + with ( + patch( + "opentelemetry.configuration._common.entry_points", + return_value=[], + ), + self.assertRaises(ConfigurationError), ): - with self.assertRaises(ConfigurationError): - # pylint: disable=unexpected-keyword-arg - self._make_provider(SamplerConfig(no_such_sampler={})) + # pylint: disable=unexpected-keyword-arg + self._make_provider(SamplerConfig(no_such_sampler={})) class TestCreateCompositeRuleBasedSampler(unittest.TestCase): @@ -607,15 +609,17 @@ def test_otlp_http_missing_package_raises(self): config = self._make_batch_config( SpanExporterConfig(otlp_http=OtlpHttpExporterConfig()) ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.proto.http.trace_exporter": None, - "opentelemetry.exporter.otlp.proto.http": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.proto.http.trace_exporter": None, + "opentelemetry.exporter.otlp.proto.http": None, + }, + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - create_tracer_provider(config) + create_tracer_provider(config) self.assertIn("otlp-proto-http", str(ctx.exception)) def test_otlp_http_created_with_endpoint(self): @@ -709,14 +713,16 @@ def test_otlp_file_development_missing_package_raises(self): otlp_file_development=ExperimentalOtlpFileExporterConfig() ) ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.json.file.trace_exporter": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.json.file.trace_exporter": None, + }, + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - create_tracer_provider(config) + create_tracer_provider(config) self.assertIn( "opentelemetry-exporter-otlp-json-file", str(ctx.exception) ) @@ -790,15 +796,17 @@ def test_otlp_grpc_missing_package_raises(self): config = self._make_batch_config( SpanExporterConfig(otlp_grpc=OtlpGrpcExporterConfig()) ) - with patch.dict( - sys.modules, - { - "opentelemetry.exporter.otlp.proto.grpc.trace_exporter": None, - "grpc": None, - }, + with ( + patch.dict( + sys.modules, + { + "opentelemetry.exporter.otlp.proto.grpc.trace_exporter": None, + "grpc": None, + }, + ), + self.assertRaises(ConfigurationError) as ctx, ): - with self.assertRaises(ConfigurationError) as ctx: - create_tracer_provider(config) + create_tracer_provider(config) self.assertIn("otlp-proto-grpc", str(ctx.exception)) def test_no_processor_type_raises(self): @@ -929,13 +937,15 @@ def test_plugin_id_generator_loaded_via_entry_point(self): def test_unknown_id_generator_raises_configuration_error(self): """Unknown id_generator name with no matching entry point raises ConfigurationError.""" - with patch( - "opentelemetry.configuration._common.entry_points", - return_value=[], + with ( + patch( + "opentelemetry.configuration._common.entry_points", + return_value=[], + ), + self.assertRaises(ConfigurationError), ): - with self.assertRaises(ConfigurationError): - # pylint: disable=unexpected-keyword-arg - self._make_provider(IdGeneratorConfig(no_such_generator={})) + # pylint: disable=unexpected-keyword-arg + self._make_provider(IdGeneratorConfig(no_such_generator={})) def test_empty_id_generator_raises_configuration_error(self): """Empty IdGenerator config (no type specified) raises ConfigurationError.""" diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/_json_codec.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/_json_codec.py index 72c315d1eaa..69f74ed657f 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/_json_codec.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/_json_codec.py @@ -10,6 +10,8 @@ import math import typing +from typing_extensions import Self + T = typing.TypeVar("T") M = typing.TypeVar("M", bound="JsonMessage") @@ -39,7 +41,7 @@ def to_json(self) -> str: return json.dumps(self.to_dict()) @classmethod - def from_json(cls: type[M], data: str | bytes) -> M: + def from_json(cls, data: str | bytes) -> Self: """ Deserialize from a JSON string or bytes. """ @@ -179,7 +181,7 @@ def decode_int64(value: int | str | None, field_name: str) -> int: ) from None -def decode_float(value: float | int | str | None, field_name: str) -> float: +def decode_float(value: float | str | None, field_name: str) -> float: """ Parse float/double from number or string, handling special values. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/logs/v1/logs_service.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/logs/v1/logs_service.py index 899c965fa3c..eea5f8f5037 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/logs/v1/logs_service.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/logs/v1/logs_service.py @@ -39,7 +39,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportLogsServiceRequest": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportLogsServiceRequest: """ Create from a dictionary with lowerCamelCase keys. @@ -80,7 +80,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportLogsServiceResponse": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportLogsServiceResponse: """ Create from a dictionary with lowerCamelCase keys. @@ -124,7 +124,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportLogsPartialSuccess": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportLogsPartialSuccess: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/metrics/v1/metrics_service.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/metrics/v1/metrics_service.py index 6537d1031f4..462b85da818 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/metrics/v1/metrics_service.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/metrics/v1/metrics_service.py @@ -39,7 +39,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportMetricsServiceRequest": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportMetricsServiceRequest: """ Create from a dictionary with lowerCamelCase keys. @@ -80,7 +80,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportMetricsServiceResponse": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportMetricsServiceResponse: """ Create from a dictionary with lowerCamelCase keys. @@ -124,7 +124,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportMetricsPartialSuccess": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportMetricsPartialSuccess: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/profiles/v1development/profiles_service.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/profiles/v1development/profiles_service.py index faaaa6105c1..cdb76f5b812 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/profiles/v1development/profiles_service.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/profiles/v1development/profiles_service.py @@ -42,7 +42,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportProfilesServiceRequest": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportProfilesServiceRequest: """ Create from a dictionary with lowerCamelCase keys. @@ -85,7 +85,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportProfilesServiceResponse": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportProfilesServiceResponse: """ Create from a dictionary with lowerCamelCase keys. @@ -129,7 +129,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportProfilesPartialSuccess": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportProfilesPartialSuccess: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/trace/v1/trace_service.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/trace/v1/trace_service.py index 27d3a1a1e0a..3ee11dac0a0 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/trace/v1/trace_service.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/collector/trace/v1/trace_service.py @@ -39,7 +39,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportTraceServiceRequest": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportTraceServiceRequest: """ Create from a dictionary with lowerCamelCase keys. @@ -80,7 +80,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportTraceServiceResponse": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportTraceServiceResponse: """ Create from a dictionary with lowerCamelCase keys. @@ -124,7 +124,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExportTracePartialSuccess": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExportTracePartialSuccess: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/common/v1/common.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/common/v1/common.py index 6942227f98b..7f229be74c6 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/common/v1/common.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/common/v1/common.py @@ -59,7 +59,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "AnyValue": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> AnyValue: """ Create from a dictionary with lowerCamelCase keys. @@ -117,7 +117,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ArrayValue": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ArrayValue: """ Create from a dictionary with lowerCamelCase keys. @@ -158,7 +158,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "KeyValueList": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> KeyValueList: """ Create from a dictionary with lowerCamelCase keys. @@ -205,7 +205,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "KeyValue": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> KeyValue: """ Create from a dictionary with lowerCamelCase keys. @@ -261,7 +261,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "InstrumentationScope": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> InstrumentationScope: """ Create from a dictionary with lowerCamelCase keys. @@ -320,7 +320,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "EntityRef": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> EntityRef: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/logs/v1/logs.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/logs/v1/logs.py index e978df472f3..c0aa87b33d0 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/logs/v1/logs.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/logs/v1/logs.py @@ -82,7 +82,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "LogsData": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> LogsData: """ Create from a dictionary with lowerCamelCase keys. @@ -129,7 +129,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ResourceLogs": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ResourceLogs: """ Create from a dictionary with lowerCamelCase keys. @@ -181,7 +181,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ScopeLogs": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ScopeLogs: """ Create from a dictionary with lowerCamelCase keys. @@ -257,7 +257,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "LogRecord": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> LogRecord: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/metrics/v1/metrics.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/metrics/v1/metrics.py index a5f63651352..32a4267eb5b 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/metrics/v1/metrics.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/metrics/v1/metrics.py @@ -60,7 +60,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "MetricsData": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> MetricsData: """ Create from a dictionary with lowerCamelCase keys. @@ -107,7 +107,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ResourceMetrics": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ResourceMetrics: """ Create from a dictionary with lowerCamelCase keys. @@ -159,7 +159,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ScopeMetrics": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ScopeMetrics: """ Create from a dictionary with lowerCamelCase keys. @@ -229,7 +229,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Metric": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Metric: """ Create from a dictionary with lowerCamelCase keys. @@ -289,7 +289,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Gauge": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Gauge: """ Create from a dictionary with lowerCamelCase keys. @@ -336,7 +336,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Sum": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Sum: """ Create from a dictionary with lowerCamelCase keys. @@ -386,7 +386,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Histogram": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Histogram: """ Create from a dictionary with lowerCamelCase keys. @@ -433,7 +433,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExponentialHistogram": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExponentialHistogram: """ Create from a dictionary with lowerCamelCase keys. @@ -477,7 +477,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Summary": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Summary: """ Create from a dictionary with lowerCamelCase keys. @@ -536,7 +536,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "NumberDataPoint": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> NumberDataPoint: """ Create from a dictionary with lowerCamelCase keys. @@ -620,7 +620,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "HistogramDataPoint": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> HistogramDataPoint: """ Create from a dictionary with lowerCamelCase keys. @@ -692,7 +692,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExponentialHistogramDataPoint.Buckets": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExponentialHistogramDataPoint.Buckets: """ Create from a dictionary with lowerCamelCase keys. @@ -767,7 +767,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ExponentialHistogramDataPoint": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ExponentialHistogramDataPoint: """ Create from a dictionary with lowerCamelCase keys. @@ -846,7 +846,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "SummaryDataPoint.ValueAtQuantile": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> SummaryDataPoint.ValueAtQuantile: """ Create from a dictionary with lowerCamelCase keys. @@ -899,7 +899,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "SummaryDataPoint": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> SummaryDataPoint: """ Create from a dictionary with lowerCamelCase keys. @@ -968,7 +968,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Exemplar": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Exemplar: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/profiles/v1development/profiles.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/profiles/v1development/profiles.py index 3d3bd90d22f..6cc79192b6a 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/profiles/v1development/profiles.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/profiles/v1development/profiles.py @@ -58,7 +58,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ProfilesDictionary": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ProfilesDictionary: """ Create from a dictionary with lowerCamelCase keys. @@ -114,7 +114,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ProfilesData": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ProfilesData: """ Create from a dictionary with lowerCamelCase keys. @@ -163,7 +163,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ResourceProfiles": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ResourceProfiles: """ Create from a dictionary with lowerCamelCase keys. @@ -215,7 +215,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ScopeProfiles": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ScopeProfiles: """ Create from a dictionary with lowerCamelCase keys. @@ -291,7 +291,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Profile": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Profile: """ Create from a dictionary with lowerCamelCase keys. @@ -357,7 +357,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Link": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Link: """ Create from a dictionary with lowerCamelCase keys. @@ -403,7 +403,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ValueType": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ValueType: """ Create from a dictionary with lowerCamelCase keys. @@ -460,7 +460,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Sample": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Sample: """ Create from a dictionary with lowerCamelCase keys. @@ -523,7 +523,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Mapping": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Mapping: """ Create from a dictionary with lowerCamelCase keys. @@ -573,7 +573,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Stack": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Stack: """ Create from a dictionary with lowerCamelCase keys. @@ -623,7 +623,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Location": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Location: """ Create from a dictionary with lowerCamelCase keys. @@ -677,7 +677,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Line": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Line: """ Create from a dictionary with lowerCamelCase keys. @@ -732,7 +732,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Function": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Function: """ Create from a dictionary with lowerCamelCase keys. @@ -788,7 +788,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "KeyValueAndUnit": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> KeyValueAndUnit: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/resource/v1/resource.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/resource/v1/resource.py index 3c76082759f..4b0b764b768 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/resource/v1/resource.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/resource/v1/resource.py @@ -45,7 +45,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Resource": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Resource: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-proto-json/src/opentelemetry/proto_json/trace/v1/trace.py b/opentelemetry-proto-json/src/opentelemetry/proto_json/trace/v1/trace.py index 16112213715..ce6ec07138d 100644 --- a/opentelemetry-proto-json/src/opentelemetry/proto_json/trace/v1/trace.py +++ b/opentelemetry-proto-json/src/opentelemetry/proto_json/trace/v1/trace.py @@ -52,7 +52,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "TracesData": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> TracesData: """ Create from a dictionary with lowerCamelCase keys. @@ -99,7 +99,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ResourceSpans": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ResourceSpans: """ Create from a dictionary with lowerCamelCase keys. @@ -151,7 +151,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "ScopeSpans": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> ScopeSpans: """ Create from a dictionary with lowerCamelCase keys. @@ -226,7 +226,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Span.Event": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Span.Event: """ Create from a dictionary with lowerCamelCase keys. @@ -289,7 +289,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Span.Link": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Span.Link: """ Create from a dictionary with lowerCamelCase keys. @@ -380,7 +380,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Span": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Span: """ Create from a dictionary with lowerCamelCase keys. @@ -471,7 +471,7 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]: return _result @builtins.classmethod - def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Status": + def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> Status: """ Create from a dictionary with lowerCamelCase keys. diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py index 128c1e22fe2..730b2bf93a3 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py @@ -261,7 +261,7 @@ def _init_tracing( def _init_metrics( - exporters_or_readers: dict[str, type[MetricExporter] | type[MetricReader]], + exporters_or_readers: dict[str, type[MetricExporter | MetricReader]], resource: Resource | None = None, exporter_args_map: ExporterArgsMap | None = None, meter_configurator: _MeterConfiguratorT | None = None, @@ -427,7 +427,7 @@ def _import_exporters( log_exporter_names: Sequence[str], ) -> tuple[ dict[str, type[SpanExporter]], - dict[str, type[MetricExporter] | type[MetricReader]], + dict[str, type[MetricExporter | MetricReader]], dict[str, type[LogRecordExporter]], ]: trace_exporters = {} @@ -718,7 +718,7 @@ def _configure(self, **kwargs): # silence the static-analysis no-name-in-module on the # conditional import. # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.configuration import ( # noqa: PLC0415 + from opentelemetry.configuration import ( configure_sdk, load_config_file, ) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py index c0798cc2cc6..36f218e1fb6 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py @@ -18,15 +18,15 @@ __all__ = [ "ConcurrentMultiLogRecordProcessor", - "Logger", - "LoggerProvider", - "LoggingHandler", + "LogDroppedAttributesWarning", "LogLimits", + "LogRecordDroppedAttributesWarning", "LogRecordLimits", "LogRecordProcessor", - "LogDroppedAttributesWarning", - "LogRecordDroppedAttributesWarning", - "ReadableLogRecord", + "Logger", + "LoggerProvider", + "LoggingHandler", "ReadWriteLogRecord", + "ReadableLogRecord", "SynchronousMultiLogRecordProcessor", ] diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py index 3925889bf6f..310a19425ab 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py @@ -22,11 +22,11 @@ "BatchLogRecordProcessor", "ConsoleLogExporter", "ConsoleLogRecordExporter", - "LogExporter", - "LogRecordExporter", + "InMemoryLogExporter", + "InMemoryLogRecordExporter", "LogExportResult", + "LogExporter", "LogRecordExportResult", + "LogRecordExporter", "SimpleLogRecordProcessor", - "InMemoryLogExporter", - "InMemoryLogRecordExporter", ] diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py index 7506e8d5e49..911f4ac92de 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py @@ -74,7 +74,6 @@ class _DefaultErrorHandler(ErrorHandler): # pylint: disable=useless-return def _handle(self, error: Exception, *args, **kwargs): logger.exception("Error handled by default error handler: ") - return None class GlobalErrorHandler: diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py index c40c740cc52..27a577ff68f 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py @@ -27,23 +27,23 @@ __all__ = [ "AlignedHistogramBucketExemplarReservoir", - "AlwaysOnExemplarFilter", "AlwaysOffExemplarFilter", + "AlwaysOnExemplarFilter", + "Counter", "Exemplar", "ExemplarFilter", "ExemplarReservoir", + "Histogram", "Meter", "MeterProvider", "MetricsTimeoutError", - "Counter", - "Histogram", - "_Gauge", "ObservableCounter", "ObservableGauge", "ObservableUpDownCounter", "SimpleFixedSizeExemplarReservoir", - "UpDownCounter", "TraceBasedExemplarFilter", + "UpDownCounter", + "_Gauge", "export", "view", ] diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py index 61db3dadd39..4e12aab7aad 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py @@ -604,7 +604,7 @@ def force_flush(self, timeout_millis: float = 10_000) -> bool: if metric_reader_error: metric_reader_error_string = "\n".join( [ - f"{metric_reader.__class__.__name__}: {repr(error)}" + f"{metric_reader.__class__.__name__}: {error!r}" for metric_reader, error in metric_reader_error.items() ] ) @@ -654,7 +654,7 @@ def _shutdown(): if metric_reader_error: metric_reader_error_string = "\n".join( [ - f"{metric_reader.__class__.__name__}: {repr(error)}" + f"{metric_reader.__class__.__name__}: {error!r}" for metric_reader, error in metric_reader_error.items() ] ) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/__init__.py index a00eb6ce5f0..8068406a280 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/__init__.py @@ -16,13 +16,13 @@ ) __all__ = [ - "Exemplar", - "ExemplarFilter", + "AlignedHistogramBucketExemplarReservoir", "AlwaysOffExemplarFilter", "AlwaysOnExemplarFilter", - "TraceBasedExemplarFilter", - "AlignedHistogramBucketExemplarReservoir", + "Exemplar", + "ExemplarFilter", "ExemplarReservoir", "ExemplarReservoirBuilder", "SimpleFixedSizeExemplarReservoir", + "TraceBasedExemplarFilter", ] diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_filter.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_filter.py index 28f0adc7476..d204177de50 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_filter.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_filter.py @@ -23,7 +23,7 @@ class ExemplarFilter(ABC): @abstractmethod def should_sample( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -50,7 +50,7 @@ class AlwaysOnExemplarFilter(ExemplarFilter): def should_sample( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -77,7 +77,7 @@ class AlwaysOffExemplarFilter(ExemplarFilter): def should_sample( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -103,7 +103,7 @@ class TraceBasedExemplarFilter(ExemplarFilter): def should_sample( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_reservoir.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_reservoir.py index 858dc0aa7b6..dbba3ebc75c 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_reservoir.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_reservoir.py @@ -38,7 +38,7 @@ class ExemplarReservoir(ABC): @abstractmethod def offer( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -82,7 +82,7 @@ def __init__(self) -> None: def offer( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -185,7 +185,7 @@ def collect(self, point_attributes: Attributes) -> list[Exemplar]: def offer( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -214,7 +214,7 @@ def offer( @abstractmethod def _find_bucket_index( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -259,7 +259,7 @@ def _reset(self) -> None: def _find_bucket_index( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, @@ -290,7 +290,7 @@ def __init__(self, boundaries: Sequence[float], **kwargs) -> None: def _find_bucket_index( self, - value: int | float, + value: float, time_unix_nano: int, attributes: Attributes, context: Context, diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py index 548aa8ee1f3..8541655093e 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py @@ -192,7 +192,7 @@ def __new__(cls, *args, **kwargs): def add( self, - amount: int | float, + amount: float, attributes: dict[str, str] | None = None, context: Context | None = None, ): @@ -232,7 +232,7 @@ def __new__(cls, *args, **kwargs): def add( self, - amount: int | float, + amount: float, attributes: dict[str, str] | None = None, context: Context | None = None, ): @@ -308,7 +308,7 @@ def __new__(cls, *args, **kwargs): def record( self, - amount: int | float, + amount: float, attributes: dict[str, str] | None = None, context: Context | None = None, ): @@ -349,7 +349,7 @@ def __new__(cls, *args, **kwargs): def set( self, - amount: int | float, + amount: float, attributes: dict[str, str] | None = None, context: Context | None = None, ): diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py index 56034c0e35c..3685e534699 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py @@ -15,7 +15,7 @@ ) # The point module is not in the export directory to avoid a circular import. -from opentelemetry.sdk.metrics._internal.point import ( # noqa: F401 +from opentelemetry.sdk.metrics._internal.point import ( Buckets, DataPointT, DataT, @@ -36,11 +36,6 @@ "AggregationTemporality", "Buckets", "ConsoleMetricExporter", - "InMemoryMetricReader", - "MetricExporter", - "MetricExportResult", - "MetricReader", - "PeriodicExportingMetricReader", "DataPointT", "DataT", "ExponentialHistogram", @@ -48,9 +43,14 @@ "Gauge", "Histogram", "HistogramDataPoint", + "InMemoryMetricReader", "Metric", + "MetricExportResult", + "MetricExporter", + "MetricReader", "MetricsData", "NumberDataPoint", + "PeriodicExportingMetricReader", "ResourceMetrics", "ScopeMetrics", "Sum", diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py index b34cba70696..f624736d56f 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py @@ -572,7 +572,7 @@ def _build_resource_detectors() -> list["ResourceDetector"]: return [ServiceInstanceIdResourceDetector(), OTELResourceDetector()] # pylint: disable=import-outside-toplevel - from opentelemetry.util._importlib_metadata import ( # noqa: PLC0415 + from opentelemetry.util._importlib_metadata import ( entry_points, # type: ignore[reportUnknownVariableType] ) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py index 1652220dfc9..a16c9d4bfbc 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py @@ -171,7 +171,7 @@ class SamplingResult: """ def __repr__(self) -> str: - return f"{type(self).__name__}({str(self.decision)}, attributes={str(self.attributes)})" + return f"{type(self).__name__}({self.decision!s}, attributes={self.attributes!s})" def __init__( self, diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py b/opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py index fc408e431e7..a6a00cbfcbf 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py @@ -81,7 +81,12 @@ class InstrumentationScope: properties. """ - __slots__ = ("_name", "_version", "_schema_url", "_attributes") + __slots__ = ( + "_name", + "_version", + "_schema_url", + "_attributes", + ) def __init__( self, diff --git a/opentelemetry-sdk/tests/error_handler/test_error_handler.py b/opentelemetry-sdk/tests/error_handler/test_error_handler.py index fadd409d77c..f64757b104a 100644 --- a/opentelemetry-sdk/tests/error_handler/test_error_handler.py +++ b/opentelemetry-sdk/tests/error_handler/test_error_handler.py @@ -15,10 +15,9 @@ class TestErrorHandler(TestCase): @patch("opentelemetry.sdk.error_handler.entry_points") def test_default_error_handler(self, mock_entry_points): - with self.assertLogs(logger, ERROR): - with GlobalErrorHandler(): - # pylint: disable=broad-exception-raised - raise Exception("some exception") + with self.assertLogs(logger, ERROR), GlobalErrorHandler(): + # pylint: disable=broad-exception-raised + raise Exception("some exception") # pylint: disable=no-self-use @patch("opentelemetry.sdk.error_handler.entry_points") @@ -43,12 +42,10 @@ class AssertionErrorHandler(ErrorHandler, AssertionError): ) mock_entry_points.configure_mock( - **{ - "return_value": [ - mock_entry_point_zero_division_error_handler, - mock_entry_point_assertion_error_handler, - ] - } + return_value=[ + mock_entry_point_zero_division_error_handler, + mock_entry_point_assertion_error_handler, + ] ) error = ZeroDivisionError() @@ -80,14 +77,13 @@ 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() - with self.assertLogs(logger, ERROR): - with GlobalErrorHandler(): - raise error + with self.assertLogs(logger, ERROR), GlobalErrorHandler(): + raise error # pylint: disable=no-self-use @patch("opentelemetry.sdk.error_handler.entry_points") @@ -104,7 +100,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 88d6923db73..d17aabe6f4c 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 @@ -557,7 +557,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, @@ -626,7 +626,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_aggregation.py b/opentelemetry-sdk/tests/metrics/test_aggregation.py index 12a42b31771..ba1d4757301 100644 --- a/opentelemetry-sdk/tests/metrics/test_aggregation.py +++ b/opentelemetry-sdk/tests/metrics/test_aggregation.py @@ -42,9 +42,7 @@ from opentelemetry.util.types import Attributes -def measurement( - value: int | float, attributes: Attributes = None -) -> Measurement: +def measurement(value: float, attributes: Attributes = None) -> Measurement: return Measurement( value, time_ns(), diff --git a/opentelemetry-sdk/tests/metrics/test_import.py b/opentelemetry-sdk/tests/metrics/test_import.py index 83cbd8b3c1c..78b4645c6fd 100644 --- a/opentelemetry-sdk/tests/metrics/test_import.py +++ b/opentelemetry-sdk/tests/metrics/test_import.py @@ -13,7 +13,7 @@ def test_import_init(self): """ with self.assertNotRaises(Exception): - from opentelemetry.sdk.metrics import ( # noqa: F401, PLC0415 + from opentelemetry.sdk.metrics import ( # noqa: F401 Counter, Histogram, Meter, @@ -31,7 +31,7 @@ def test_import_export(self): """ with self.assertNotRaises(Exception): - from opentelemetry.sdk.metrics.export import ( # noqa: F401, PLC0415 + from opentelemetry.sdk.metrics.export import ( # noqa: F401 AggregationTemporality, ConsoleMetricExporter, DataPointT, @@ -58,7 +58,7 @@ def test_import_view(self): """ with self.assertNotRaises(Exception): - from opentelemetry.sdk.metrics.view import ( # noqa: F401, PLC0415 + from opentelemetry.sdk.metrics.view import ( # noqa: F401 Aggregation, DefaultAggregation, DropAggregation, 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 694ed3e9e7e..97d075d4ea1 100644 --- a/opentelemetry-sdk/tests/test_configurator.py +++ b/opentelemetry-sdk/tests/test_configurator.py @@ -1443,7 +1443,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 @@ -1456,7 +1456,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/export/test_export.py b/opentelemetry-sdk/tests/trace/export/test_export.py index f974fb15c45..15dd038d1a2 100644 --- a/opentelemetry-sdk/tests/trace/export/test_export.py +++ b/opentelemetry-sdk/tests/trace/export/test_export.py @@ -95,10 +95,9 @@ def test_simple_span_processor_no_context(self): span_processor = export.SimpleSpanProcessor(my_exporter) tracer_provider.add_span_processor(span_processor) - with tracer.start_span("foo"): - with tracer.start_span("bar"): - with tracer.start_span("xxx"): - pass + with tracer.start_span("foo"), tracer.start_span("bar"): + with tracer.start_span("xxx"): + pass self.assertListEqual(["xxx", "bar", "foo"], spans_names_list) diff --git a/opentelemetry-sdk/tests/trace/test_span_processor.py b/opentelemetry-sdk/tests/trace/test_span_processor.py index 4499427cc1a..f334ec05408 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: @@ -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: diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 880b072945b..611e1302929 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -785,7 +785,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: @@ -794,7 +794,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 @@ -2339,15 +2339,17 @@ def test_parent_child_span_exception(self): child_span = None try: - with tracer.start_as_current_span( - "parent", - ) as parent_span: - with tracer.start_as_current_span( + with ( + tracer.start_as_current_span( + "parent", + ) as parent_span, + tracer.start_as_current_span( "child", record_exception=False, set_status_on_exception=False, - ) as child_span: - raise exception + ) as child_span, + ): + raise exception except Exception: # pylint: disable=broad-exception-caught pass diff --git a/pyproject.toml b/pyproject.toml index 84750cbb8cb..cb8bc5eb571 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -77,8 +77,8 @@ log_cli = true [tool.ruff] # https://docs.astral.sh/ruff/configuration/ -target-version = "py310" line-length = 79 +force-exclude = true extend-exclude = [ "*_pb2*.py*", "opentelemetry-proto-json/src/*", @@ -89,21 +89,14 @@ extension = { added = "markdown", changed = "markdown", deprecated = "markdown", [tool.ruff.lint] # https://docs.astral.sh/ruff/linter/#rule-selection # pylint: https://github.com/astral-sh/ruff/issues/970 -select = [ - "I", # https://docs.astral.sh/ruff/rules/#isort-i - "F", # https://docs.astral.sh/ruff/rules/#pyflakes-f - "E", # https://docs.astral.sh/ruff/rules/#error-e - "W", # https://docs.astral.sh/ruff/rules/#warning-w - "PLC", # https://docs.astral.sh/ruff/rules/#convention-plc - "PLE", # https://docs.astral.sh/ruff/rules/#error-ple - "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 - "UP", # https://docs.astral.sh/ruff/rules/#pyupgrade-up -] - +# Ignore rules from the default ruleset that don't have auto-fixes available and need to be +# manually resolved, plus E501 and RUF023 which are intentionally ignored. ignore = [ - "E501", # line-too-long + "B008", "B017", "B018", "B020", "B023", "B039", "BLE001", "C401", + "C408", "C417", "DTZ007", "E501", "FLY002", "ISC004", "LOG015", "PERF102", + "PIE796", "PLW0602", "PLW1508", "PT014", "PYI034", "PYI036", "RUF009", "RUF012", + "RUF013", "RUF015", "RUF023", "S110", "SIM102", "SIM103", "SIM115", "SIM117", + "SIM118", "TRY002", "TRY004", "TRY201", "TRY401", ] [tool.ruff.lint.per-file-ignores] diff --git a/shim/opentelemetry-opencensus-shim/tests/test_shim.py b/shim/opentelemetry-opencensus-shim/tests/test_shim.py index ef0ddc20afe..255d423fa29 100644 --- a/shim/opentelemetry-opencensus-shim/tests/test_shim.py +++ b/shim/opentelemetry-opencensus-shim/tests/test_shim.py @@ -105,20 +105,22 @@ def test_set_span_kind_logs_a_warning(self): with self.assertLogs(level=logging.WARNING): span.span_kind = SpanKind.CLIENT - # pylint: disable=no-self-use,no-member,protected-access + # pylint: disable=no-self-use,no-member,protected-access,confusing-with-statement def test_shim_span_contextmanager_calls_does_not_call_end(self): # This was a bug in first implementation where the underlying OTel span.end() was # called after span.__exit__ which caused double-ending the span. oc_tracer = OcTracer() oc_span = oc_tracer.start_span("foo") - with patch.object( + with ( + patch.object( + oc_span, + "_self_otel_span", + wraps=oc_span._self_otel_span, + ) as spy_otel_span, oc_span, - "_self_otel_span", - wraps=oc_span._self_otel_span, - ) as spy_otel_span: - with oc_span: - pass + ): + pass spy_otel_span.end.assert_not_called() diff --git a/shim/opentelemetry-opentracing-shim/tests/testbed/test_subtask_span_propagation/test_asyncio.py b/shim/opentelemetry-opentracing-shim/tests/testbed/test_subtask_span_propagation/test_asyncio.py index 38bf77d5dd5..8526a7926fe 100644 --- a/shim/opentelemetry-opentracing-shim/tests/testbed/test_subtask_span_propagation/test_asyncio.py +++ b/shim/opentelemetry-opentracing-shim/tests/testbed/test_subtask_span_propagation/test_asyncio.py @@ -27,7 +27,7 @@ def test_main(self): self.assertNamesEqual(spans, ["child", "parent"]) self.assertIsChildOf(spans[0], spans[1]) - async def parent_task(self, message): # noqa + async def parent_task(self, message): with self.tracer.start_active_span("parent"): res = await self.child_task(message) diff --git a/tests/opentelemetry-test-utils/src/opentelemetry/test/_otlp_test_server.py b/tests/opentelemetry-test-utils/src/opentelemetry/test/_otlp_test_server.py index 146dd322be7..2cc63d9cb3b 100644 --- a/tests/opentelemetry-test-utils/src/opentelemetry/test/_otlp_test_server.py +++ b/tests/opentelemetry-test-utils/src/opentelemetry/test/_otlp_test_server.py @@ -51,15 +51,15 @@ def _make_handler( logs_path: str, ) -> type[BaseHTTPRequestHandler]: # pylint: disable=import-outside-toplevel,no-name-in-module - from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ( # noqa: PLC0415 + from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import ( ExportLogsServiceRequest, ExportLogsServiceResponse, ) - from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ( # noqa: PLC0415 + from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ( ExportMetricsServiceRequest, ExportMetricsServiceResponse, ) - from opentelemetry.proto.collector.trace.v1.trace_service_pb2 import ( # noqa: PLC0415 + from opentelemetry.proto.collector.trace.v1.trace_service_pb2 import ( ExportTraceServiceRequest, ExportTraceServiceResponse, ) @@ -152,7 +152,7 @@ def __init__( ) -> None: try: # pylint: disable-next=import-outside-toplevel,unused-import - import opentelemetry.proto # noqa: F401, PLC0415 + import opentelemetry.proto # noqa: F401 except ImportError: raise ImportError( "opentelemetry-proto is required to use OtlpProtoTestServer. " diff --git a/tests/opentelemetry-test-utils/src/opentelemetry/test/test_base.py b/tests/opentelemetry-test-utils/src/opentelemetry/test/test_base.py index 3cd1b93837a..f2826a32e1d 100644 --- a/tests/opentelemetry-test-utils/src/opentelemetry/test/test_base.py +++ b/tests/opentelemetry-test-utils/src/opentelemetry/test/test_base.py @@ -183,9 +183,7 @@ def is_data_points_equal( data_point: DataPointT, est_value_delta: float | None = 0, ): - if type(expected_data_point) != type( # noqa: E721 - data_point - ) or not isinstance( + if type(expected_data_point) != type(data_point) or not isinstance( expected_data_point, (HistogramDataPoint, NumberDataPoint) ): return False diff --git a/tests/opentelemetry-test-utils/src/opentelemetry/test/weaver_live_check.py b/tests/opentelemetry-test-utils/src/opentelemetry/test/weaver_live_check.py index 115fa1c282f..774cd011991 100644 --- a/tests/opentelemetry-test-utils/src/opentelemetry/test/weaver_live_check.py +++ b/tests/opentelemetry-test-utils/src/opentelemetry/test/weaver_live_check.py @@ -302,7 +302,7 @@ def __init__( def __enter__(self) -> "WeaverLiveCheck": return self.start() - def __exit__(self, exc_type: Any, *_: Any) -> None: + def __exit__(self, exc_type: Any, *_: object) -> None: if exc_type is not None: self._stopped = True self.close() diff --git a/tests/opentelemetry-test-utils/tests/test_otlp_test_server.py b/tests/opentelemetry-test-utils/tests/test_otlp_test_server.py index 6d6ae5e467d..fdd456c249c 100644 --- a/tests/opentelemetry-test-utils/tests/test_otlp_test_server.py +++ b/tests/opentelemetry-test-utils/tests/test_otlp_test_server.py @@ -360,9 +360,11 @@ def test_unknown_path_returns_404(self): self.assertEqual(resp.status_code, 404) def test_missing_proto_raises_import_error(self): - with unittest.mock.patch.dict( - "sys.modules", {"opentelemetry.proto": None} + with ( + unittest.mock.patch.dict( + "sys.modules", {"opentelemetry.proto": None} + ), + self.assertRaises(ImportError) as cm, ): - with self.assertRaises(ImportError) as cm: - OtlpProtoTestServer() + OtlpProtoTestServer() self.assertIn("opentelemetry-proto", str(cm.exception)) diff --git a/uv.lock b/uv.lock index c495c3e31f0..91af2da104d 100644 --- a/uv.lock +++ b/uv.lock @@ -465,7 +465,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -1886,27 +1886,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.15.20" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/dc/35b341fc554ba02f217fc10da57d1a75168cfbcf75b0ef2202176d4c4f2d/ruff-0.15.20.tar.gz", hash = "sha256:1416eb04349192646b54de98f146c4f59afe37d0decfc02c3cbbf396f3a28566", size = 4755489, upload-time = "2026-06-25T17:20:37.578Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/d9/2d5014f0253ba541d2061d9fa7193f48e941c8b21bb88a7ff9bbe0bd0596/ruff-0.15.20-py3-none-linux_armv6l.whl", hash = "sha256:00e188c53e499c3c1637f73c91dcf2fb56d576cab76ce1be50a27c4e80e37078", size = 10839665, upload-time = "2026-06-25T17:19:44.702Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d3/ac1798ba64f670698867fcfc591d50e7e421bef137db564858f619a30fcf/ruff-0.15.20-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9ebd1fd9b9c95fc0bd7b2761aebec1f030013d2e193a2901b224af68fe47251b", size = 11208649, upload-time = "2026-06-25T17:19:48.787Z" }, - { url = "https://files.pythonhosted.org/packages/47/47/d3ac899991202095dfcf3d5176be4272642be3cf981a2f1a30f72a2afb95/ruff-0.15.20-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c5b16cdd67ca108185cd36dce98c576350c03b1660a751de725fb049193a0632", size = 10622638, upload-time = "2026-06-25T17:19:51.354Z" }, - { url = "https://files.pythonhosted.org/packages/33/13/4e043fe30aa94d4ff5213a9881fc296d12960f5971b234a5263fdc225312/ruff-0.15.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3413bb3c3d2ca6a8208f1f4809cd2dca3c6de6d0b491c0e70847672bde6e6efd", size = 10984227, upload-time = "2026-06-25T17:19:54.044Z" }, - { url = "https://files.pythonhosted.org/packages/76/e6/92e7bf40388bc5800073b96564f56264f7e48bfd1a498f5ced6ae6d5a769/ruff-0.15.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd7ec42b3bb3da066488db093308a69c4ac5ee6d2af333a86ba6e2eb2e7dd44b", size = 10622882, upload-time = "2026-06-25T17:19:57.037Z" }, - { url = "https://files.pythonhosted.org/packages/13/7a/43460be3f24495a3aa46d4b16873e2c4941b3b5f0b00cf88c03b7b94b339/ruff-0.15.20-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1a36ad0eb77fba9aabfb69ede54de6f376d04ac18ebea022847046d340a8267", size = 11474808, upload-time = "2026-06-25T17:20:00.357Z" }, - { url = "https://files.pythonhosted.org/packages/27/a0/f37077884873221c6b33b4ab49eb18f9f88e54a16a25a5bca59bef46dd66/ruff-0.15.20-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6df3b1e4610432f0386dba04d853b5f08cbbc903410c6fcc02f620f05aff53c", size = 12293094, upload-time = "2026-06-25T17:20:03.446Z" }, - { url = "https://files.pythonhosted.org/packages/a6/74/165545b60256a9704c21ac0ec4a0d07933b320812f9584836c9f4aca4292/ruff-0.15.20-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e89f198a1ea6ef0d727c1cf16088bc91a6cb0ab947dedc966715691647186eae", size = 11526176, upload-time = "2026-06-25T17:20:06.301Z" }, - { url = "https://files.pythonhosted.org/packages/86/b1/a976a136d40ade83ce743578399865f57001003a409acadc0ecbb3051082/ruff-0.15.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309809086c2acb67624950a3c8133e80f32d0d3e27106c0cd60ff26657c9f24b", size = 11520767, upload-time = "2026-06-25T17:20:09.191Z" }, - { url = "https://files.pythonhosted.org/packages/19/0f/f032696cb01c9b54c0263fa393474d7758f1cdc021a01b04e3cbc2500999/ruff-0.15.20-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:2d2374caa2f2c2f9e2b7da0a50802cfb8b79f55a9b5e49379f564544fbf56487", size = 11500132, upload-time = "2026-06-25T17:20:13.602Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f4/51b1a14bc69e8c224b15dab9cce8e99b425e0455d462caa2b3c9be2b6a8e/ruff-0.15.20-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a1ed17b65293e0c2f22fc387bc13198a5de94bf4429589b0ff6946b0feaf21a3", size = 10943828, upload-time = "2026-06-25T17:20:16.635Z" }, - { url = "https://files.pythonhosted.org/packages/71/4b/fe267640783cd02bf6c5cc290b1df1051be2ec294c678b5c15fe19e52343/ruff-0.15.20-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f701305e66b38ea6c91882490eb73459796808e4c6362a1b765255e0cdcd4053", size = 10645418, upload-time = "2026-06-25T17:20:19.4Z" }, - { url = "https://files.pythonhosted.org/packages/b0/c0/a65aa4ec2f5e87a1df32dc3ec1fede434fe3dfd5cbcf3b503cafc676ab54/ruff-0.15.20-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b9c0c367ad8e5d0d5b5b8537864c469a0a0e55417aadfbeca41fa61333be9f4", size = 11211770, upload-time = "2026-06-25T17:20:22.033Z" }, - { url = "https://files.pythonhosted.org/packages/5a/a4/0caa331d954ae2723d729d351c989cb4ca8b6077d5c6c2cb6de75e98c041/ruff-0.15.20-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:01cc00dd58f0df339d0e902219dd53990ea99996a0344e5d9cc8d45d5307e460", size = 11618698, upload-time = "2026-06-25T17:20:25.259Z" }, - { url = "https://files.pythonhosted.org/packages/10/9b/5f14927848d2fd4aa891fd88d883788c5a7baba561c7874732364045708c/ruff-0.15.20-py3-none-win32.whl", hash = "sha256:ed65ef510e43a137207e0f01cfcf998aeddb1aeeda5c9d35023e910284d7cf21", size = 10857322, upload-time = "2026-06-25T17:20:28.612Z" }, - { url = "https://files.pythonhosted.org/packages/fa/f0/fe47c501f9dea92a26d788ff98bb5d92ed4cb4c88792c5c88af6b697dc8e/ruff-0.15.20-py3-none-win_amd64.whl", hash = "sha256:a525c81c70fb0380344dd1d8745d8cc1c890b7fc94a58d5a07bd8eb9557b8415", size = 11993274, upload-time = "2026-06-25T17:20:31.871Z" }, - { url = "https://files.pythonhosted.org/packages/d7/2b/9555445e1201d92b3195f45cdb153a0b68f24e0a4273f6e3d5ab46e212bb/ruff-0.15.20-py3-none-win_arm64.whl", hash = "sha256:2f5b2a6d614e8700388806a14996c40fab2c47b819ef57d790a34878858ed9ca", size = 11343498, upload-time = "2026-06-25T17:20:35.03Z" }, +version = "0.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/25/7113f6d5498888c5fb7db34081cba7d5971c4cb1bfb26819966eee68f003/ruff-0.16.1.tar.gz", hash = "sha256:fedad7c801dabd3fb9741d76aca39246e6ddd9ca446a015875207bf19f1e6bc7", size = 4877500, upload-time = "2026-07-30T19:37:01.379Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/bd/694da69368e0973de65df2ddc73ab18d43c469d5963d9b150911de6bc513/ruff-0.16.1-py3-none-linux_armv6l.whl", hash = "sha256:58edb313b88f0c5460a26adf5f39a37a3be789494a15e3e411e35fa78b89f9a0", size = 10839126, upload-time = "2026-07-30T19:36:13.697Z" }, + { url = "https://files.pythonhosted.org/packages/3f/f0/b626e5d5bd0dd9576263658ef12885e2288afd1029a48e26ffed65ec1ac1/ruff-0.16.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:fde5a99e2f97479af66edd6622c6d5a2a7592c77cf4153d9e4428f5eeb55b60c", size = 11070253, upload-time = "2026-07-30T19:36:17.14Z" }, + { url = "https://files.pythonhosted.org/packages/83/63/f40acfb6b35b88623e71684942b552c3edd96035f5d98f313815f7b277de/ruff-0.16.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e0d4c20532fca4f7fa609369161d968dd28f65d83dabbd61d8e9c7edbf7001f6", size = 10561425, upload-time = "2026-07-30T19:36:20.04Z" }, + { url = "https://files.pythonhosted.org/packages/aa/dd/14ec0e9c2b4d315547dd38765004b4863e354e1b52cb308272215d9f6f6d/ruff-0.16.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30affbcedf59ad5703d9c91f82266e02b47739f797e1a7b6e158e5526a6dae38", size = 10948879, upload-time = "2026-07-30T19:36:22.476Z" }, + { url = "https://files.pythonhosted.org/packages/33/e9/9d870cbae575030fdef595f04b4b97573c525b5497cce4f4498cf2f85446/ruff-0.16.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24e9c631573cbca9d20f1283f8f479b2afa4a8503504822bd71a293889f16743", size = 10643691, upload-time = "2026-07-30T19:36:24.914Z" }, + { url = "https://files.pythonhosted.org/packages/c4/09/12743d544e2173f53ecd27217c65f90d2bc0f8424a66a60339e56bbc0457/ruff-0.16.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b41bdd48fb420987a9b5212e4957c26ad4abce401fa9ea9d4d85843727945f4f", size = 11435354, upload-time = "2026-07-30T19:36:28.447Z" }, + { url = "https://files.pythonhosted.org/packages/7f/89/a1652b2daee52083c9554a6333b678a8b01d0400f976827bb87857f9449a/ruff-0.16.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b0d1e1393b7648079e13669de1c1f4fde06d4583e84d8fd5c1551e0a77a2aa75", size = 12259033, upload-time = "2026-07-30T19:36:31.326Z" }, + { url = "https://files.pythonhosted.org/packages/16/96/ecdcb8c54ee7b123b487f807eb014e6e019155a0b81dfb669acd52f28ce3/ruff-0.16.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07bf434b1c95f4e093be4532068ef4fcf00924eb2ade8796075980902d6fd54a", size = 11667981, upload-time = "2026-07-30T19:36:34.394Z" }, + { url = "https://files.pythonhosted.org/packages/cd/90/c52e12e0d862e9572f2a33aa227409143520abe53111e9a6babbac7b4af8/ruff-0.16.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39897739f112253ee4fdd2e8aa9a4f9ded99fb2be367d5f31dfa4ded6025584c", size = 11468183, upload-time = "2026-07-30T19:36:37.339Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6b/4ffb7ad1d83eb16cf8cbb3c8815d3f11c88460fd162d4b372a2059be1c2a/ruff-0.16.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:82ae3c0c0d74daf17b968a10b7b3bb3ef297ab7de0c1f749646b25e690ccb150", size = 11470071, upload-time = "2026-07-30T19:36:39.91Z" }, + { url = "https://files.pythonhosted.org/packages/9c/72/32ae7db4c0b5e32ab611787caa19d1546800676d79f7483b7100a3561bf4/ruff-0.16.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4d5f2ed10f8242d83fc08d521301089364e3375375705356f20c0e31606ef3ef", size = 10919503, upload-time = "2026-07-30T19:36:42.65Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ca/3d901ba6ad6fc38da39c3448fc6c59ac945679293a17c3ceb6d6c1cba13e/ruff-0.16.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a4665b309891f83f3e3c25447935f1213e9abbd4b5640af7a1f2def9f8d413c1", size = 10649861, upload-time = "2026-07-30T19:36:45.18Z" }, + { url = "https://files.pythonhosted.org/packages/92/79/894ef1ced26552d5f8c9cf6d85b0687840e1128c55aeab7b9c2d54a0d880/ruff-0.16.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26e9ca5c9bc3971f20d3cf18a957f52ffd6a5f6564ff15c4912a144dcac22494", size = 11148137, upload-time = "2026-07-30T19:36:47.936Z" }, + { url = "https://files.pythonhosted.org/packages/2d/69/3609a09fa1cb46cc28b762363e440a354204e5dff01bd0c8d7437874d6b9/ruff-0.16.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:67e1e1e3fa4f0c82f0e36d4cd61e661f6e7a6196cb1aa92fe0828fa7b8f257cd", size = 11559211, upload-time = "2026-07-30T19:36:50.448Z" }, + { url = "https://files.pythonhosted.org/packages/fc/8a/fb22af2fd78a736e241fabf67e30ce1799a64244026377a49e133af90762/ruff-0.16.1-py3-none-win32.whl", hash = "sha256:d31765e131295b8445caf301e3e8a85b34d1b9b211b4109b7ba457888b051806", size = 10838258, upload-time = "2026-07-30T19:36:53.298Z" }, + { url = "https://files.pythonhosted.org/packages/d4/35/e57fd9fb5d423961df087a00b12d42c0a830288dc2f3b45ecca299158b4f/ruff-0.16.1-py3-none-win_amd64.whl", hash = "sha256:09b05e8b90c2cb06ad63464350e7a45e8e44a2dfe52072ebfba6666ca8d3f596", size = 11961111, upload-time = "2026-07-30T19:36:56.107Z" }, + { url = "https://files.pythonhosted.org/packages/cb/46/240ea004bf6dc4feb40e9832f2205a476a47dd5b8a3f8211a5fc5f95e20e/ruff-0.16.1-py3-none-win_arm64.whl", hash = "sha256:dbaadaac38c70239f056d306b7476f246b0bf000fa6b3876402acbf5b227eaf8", size = 11309414, upload-time = "2026-07-30T19:36:58.79Z" }, ] [[package]] @@ -2088,28 +2088,28 @@ wheels = [ [[package]] name = "uv" -version = "0.11.26" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/cb/5efc713948ddb10b00abfb51bfd429221c720175557f9c7965fea2448fe4/uv-0.11.26.tar.gz", hash = "sha256:2a433ece2ace088dd572d8abb0e6bd9a4ecb0e10bc9856447bbb37545f384f29", size = 4331220, upload-time = "2026-06-30T14:52:03.77Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/71/86dbffac9e26df28a16639c426cf4ba572aaf43d9231463e0dca337895b2/uv-0.11.26-py3-none-linux_armv6l.whl", hash = "sha256:fb97bf04512dfe16d86084e75d8129701fc8da9fb40de8746b73c3aa617c5897", size = 25197324, upload-time = "2026-06-30T14:50:51.75Z" }, - { url = "https://files.pythonhosted.org/packages/ec/80/525b73c8188e7052343e7109466a08fcd5195055aff4b0346ce3622e48cb/uv-0.11.26-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a58a06e5a4b0035538d3ab4160ad74c716076ea7148eb3317171c6276ac020b4", size = 24179172, upload-time = "2026-06-30T14:50:56.52Z" }, - { url = "https://files.pythonhosted.org/packages/7b/5e/cf7b94ed3b1932c2a62573dcd388ad6c1da5c52111cd71ab7f20faa4a0aa/uv-0.11.26-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b6d078d2ce83897884c2330c0676f27be4bf3d223fb2a409460f579fb5f0a98", size = 22949576, upload-time = "2026-06-30T14:51:00.538Z" }, - { url = "https://files.pythonhosted.org/packages/bf/fd/71fa021f6909c4139d8354bea623b5e0ef0ce4a08da250da1a1645528da2/uv-0.11.26-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:1cd9ba4951681ce17f1703106266fcbe27aaa7d37f07d53cce8b5686d68a8755", size = 24936673, upload-time = "2026-06-30T14:51:04.496Z" }, - { url = "https://files.pythonhosted.org/packages/7d/5e/273425e58a8812423e3d1f6c5da1015e636fbf13a83d104317ca37e16304/uv-0.11.26-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:e4f4c3268e69ac96f01972274a62f5f930c03cbc680adba6f21e63237ba3a639", size = 24719617, upload-time = "2026-06-30T14:51:08.419Z" }, - { url = "https://files.pythonhosted.org/packages/81/f8/1601e2acc7c54963814b4831eab996d8599e690712722c5acec5114860be/uv-0.11.26-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:efcbe0e187846f5ddba23bcaed17e4f9cd2463da5c45bdb5869616f686d713ff", size = 24734176, upload-time = "2026-06-30T14:51:12.685Z" }, - { url = "https://files.pythonhosted.org/packages/88/d2/a8a422e54c08cf4b8d51bedb9dbdd3cc233aa290ad8b3ee0438c0c02a3a5/uv-0.11.26-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:120ab2de93164d08cf5950f7fe18cbebe3ff670865ae41a292452bab2346477f", size = 26158780, upload-time = "2026-06-30T14:51:16.514Z" }, - { url = "https://files.pythonhosted.org/packages/db/e6/647fe5fdc888a3d27f79977877ce4e88052fe9be5398371e51bb134fc262/uv-0.11.26-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9052bf27c7ee426901f35a48715fa9288ce631c1878b91c9a6c950288f4b8633", size = 27009550, upload-time = "2026-06-30T14:51:20.659Z" }, - { url = "https://files.pythonhosted.org/packages/72/c2/85d8e762ad83b0f14fae2255b0578c4fd7dc915746f81b64ed786342627a/uv-0.11.26-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efdddfcc9b1b790c5f7985c5c183c851682ced165b44ffa914f4947f5cad1fbf", size = 26183777, upload-time = "2026-06-30T14:51:24.715Z" }, - { url = "https://files.pythonhosted.org/packages/d3/00/478c3a870dcac690b8c337ee950a60a952e817f574945e85155c3cc0ab34/uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dcf4e0b5b5cbdc242dcb002f1f8d99e7cf8c043609869228a9ce15e095c0b18", size = 26260589, upload-time = "2026-06-30T14:51:28.809Z" }, - { url = "https://files.pythonhosted.org/packages/a7/51/e4e43e106fb8cdc026b97491ea4600f4194a9c4da0b4e4e30c2a7dceb268/uv-0.11.26-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:866ae8d28f7381c15de0906a284c1e97916424c635bf40f7960b3fc889cd725e", size = 25073850, upload-time = "2026-06-30T14:51:32.717Z" }, - { url = "https://files.pythonhosted.org/packages/f2/c2/e772b7e6c8a835e8bf6739a391cdfc8e8e244c5c496d9b40625068b59ff4/uv-0.11.26-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl", hash = "sha256:22f6d62e794b252ff3a1e2dfe5010cc76208f90b2c906e54971a0223ad6f16bc", size = 25682609, upload-time = "2026-06-30T14:51:36.888Z" }, - { url = "https://files.pythonhosted.org/packages/1a/69/ea77209a224a23a399cb7f6414f77ef032bd9e083e01199a0ebebf0d3ff2/uv-0.11.26-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:edd0c12b75141a6d830d138a91e366ad66e630f1c1dcaf83b8325b80cbacfcbb", size = 25800556, upload-time = "2026-06-30T14:51:40.937Z" }, - { url = "https://files.pythonhosted.org/packages/77/60/b6c0c03d2538a016b6624fa251960012e564ea02f841e958c7d60e974685/uv-0.11.26-py3-none-musllinux_1_1_i686.whl", hash = "sha256:af6a45b11a569cc4d2437e89a25a53dcf753f2a02a8f2de96be09b9b942cb3ec", size = 25385658, upload-time = "2026-06-30T14:51:45.103Z" }, - { url = "https://files.pythonhosted.org/packages/8d/e7/46881ff9164aa2e7c649901837d58eee3c57beb3b0fcc0fea6a4e40cf8f3/uv-0.11.26-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:c28822517d03aebbe9549aaaecc88ad580e4b2b6a927abffe5774a74d6ba09f6", size = 26551013, upload-time = "2026-06-30T14:51:49.062Z" }, - { url = "https://files.pythonhosted.org/packages/d6/94/380dad6c2bbe12417025aacd12cfc08322ed4c9dd8f760bff7035b86f22d/uv-0.11.26-py3-none-win32.whl", hash = "sha256:79e5c1b3410047e1962290c3b7b8f512d2c1bb95200c60b016f7729287cf34c0", size = 23947180, upload-time = "2026-06-30T14:51:53.065Z" }, - { url = "https://files.pythonhosted.org/packages/d0/13/9c588226d5b478328d739e654944430719f3ffe8999d6a24d425ec9664ab/uv-0.11.26-py3-none-win_amd64.whl", hash = "sha256:d95567e9470dc48ff03265f420c3c6973f6437f18a79d5e00b6eb4b2d9379907", size = 26909320, upload-time = "2026-06-30T14:51:57.235Z" }, - { url = "https://files.pythonhosted.org/packages/21/1d/ea66b12813878797126e2b3aca124b1c9c5ef53120702d1c00172f90a21d/uv-0.11.26-py3-none-win_arm64.whl", hash = "sha256:7e69d1569afbb936e7bf4e4ab2f72d606405f4a68f380f088a0b2233e84e056a", size = 25176820, upload-time = "2026-06-30T14:52:01.05Z" }, +version = "0.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/e7/653d48766f5a7a330fdb83e7de67705e2a428bc65f783ed11a0d835e9865/uv-0.12.2.tar.gz", hash = "sha256:1fa777b1b334b4b4c95af09ae0b128c2404084f412a851bdb0b6f5e2eb357df1", size = 5873701, upload-time = "2026-08-05T19:21:55.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/22/629a8fbca3d2d4a00030e76e4aeb5bf99458b74ceb8e681e7d64c1a9094b/uv-0.12.2-py3-none-linux_armv6l.whl", hash = "sha256:618214e75871dba436c469456bdd8019ead2cf66689bd786bd48261e367f2b1f", size = 21779937, upload-time = "2026-08-05T19:20:52.663Z" }, + { url = "https://files.pythonhosted.org/packages/db/46/012f5592c94cbbaca7a2aedb3d853891519a63675b846b1f72dc22bf984d/uv-0.12.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:594dab10d5ff79ca686807fd25c9f4ebd5c40157ddc4a25c0dd934d18ae56bc2", size = 20046124, upload-time = "2026-08-05T19:20:56.871Z" }, + { url = "https://files.pythonhosted.org/packages/bc/bd/55222e2da09f12be3e662e4a36a9c68cde85c27c943c0867f3b12f1aea76/uv-0.12.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c5d10c5ba988afe7fe0cd0b943219eaa45d4191a37e3165126b0bb3e308373cb", size = 18415024, upload-time = "2026-08-05T19:21:00.228Z" }, + { url = "https://files.pythonhosted.org/packages/3b/88/3b08dd402cea1121b45baf2a2e1b105ecea9fa6b007564fca14f04eedf58/uv-0.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:974a79184f901cd6f6fb4155d8fb2f709c951b4f5843352dabccee08afcfd8ee", size = 21167788, upload-time = "2026-08-05T19:21:03.587Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ab/df7048e32f7dc8c111bafd1c0000771182d44ba598cb2ca6aa01d6e1a701/uv-0.12.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:e57b047a5fcc5433a01397b6750e0abd472b320677b35bec24b5810db0414a55", size = 21295352, upload-time = "2026-08-05T19:21:07.198Z" }, + { url = "https://files.pythonhosted.org/packages/ec/64/116bda88bf0aef59010b8bb0e7210876aee2d02859f720b1fbeda02538b0/uv-0.12.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:86ec228fe419e75b1d943d4c12ae1b7dd1e23caef565d52474467b5ca1e4e6a5", size = 21328080, upload-time = "2026-08-05T19:21:10.803Z" }, + { url = "https://files.pythonhosted.org/packages/28/c7/9ea07fb177cafa41c5a7a419b8304a8721608a36ce54c08233c63bc65e02/uv-0.12.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8740cbb2d2d3f9da79049621506f45f1ec2afbb63badda1458c5eadac2ddc233", size = 21965650, upload-time = "2026-08-05T19:21:14.879Z" }, + { url = "https://files.pythonhosted.org/packages/04/36/8d2857c23b946766930e2a7cb29b2625c2ae1d91f7334c3f8ce3e4fd32f3/uv-0.12.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06ce541290777ddf31dcbfa35827270244b8015f7dd0b2e5db8394753e6023b5", size = 23249866, upload-time = "2026-08-05T19:21:18.376Z" }, + { url = "https://files.pythonhosted.org/packages/20/a1/c9b594b8639e35ebac78e3fc14cd1c7d45db159a86c8beede317b66f975c/uv-0.12.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2665c331bff339e3bbe406d3c48ef241b4d96e4dc77b4ff7b8051b9f4a839fd2", size = 22927435, upload-time = "2026-08-05T19:21:21.979Z" }, + { url = "https://files.pythonhosted.org/packages/a7/fe/a87be2a492440945e745b0dc81aef7fea9730d8194af88d854b7641f5ddf/uv-0.12.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a8d93d1fe019561b70494a8e1332492afb5f14dadc33d5239569d0964164d10", size = 22321279, upload-time = "2026-08-05T19:21:25.578Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/a980effdb4cb95462184bf2f1973e2d320e62743c904e1f7351177b25297/uv-0.12.2-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:8e2f9faae9ea4fd02d46f0a3a22f0a7d5076aa0046750a3250ec0f3ede8e36aa", size = 21312018, upload-time = "2026-08-05T19:21:29.183Z" }, + { url = "https://files.pythonhosted.org/packages/87/b1/a83935957bf84414106e6486eb99d265085a04acd8584ff5220c18a5239a/uv-0.12.2-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl", hash = "sha256:d19cb83db136b0def185cbb23e8894b1fb43587cd8c14e30681e9381144199a1", size = 21950961, upload-time = "2026-08-05T19:21:32.929Z" }, + { url = "https://files.pythonhosted.org/packages/ca/68/04137a4dfc95fe0014a509ae643de065043811a988b8bbde3fa02397c080/uv-0.12.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:78ca00dcaf7fa5fb720d50232fc1e0931839d29a97ebb0e44f24e564c4d90763", size = 22088891, upload-time = "2026-08-05T19:21:36.308Z" }, + { url = "https://files.pythonhosted.org/packages/e4/f2/b2885d06aed6c494387a25c64eaefe129ac73fe366fe887db27e1263c126/uv-0.12.2-py3-none-musllinux_1_1_i686.whl", hash = "sha256:cea51e735c0b68b8492c8b3d0496db1fd335a548011ae2093a6a9bd3a4cb4056", size = 21202799, upload-time = "2026-08-05T19:21:39.745Z" }, + { url = "https://files.pythonhosted.org/packages/74/90/f347d51195286a7a3a7ad1075e557a5f86e20df4feaa9b009f9a2bd13a92/uv-0.12.2-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:da7780a76d0691eee1af4d43a3e637ece62b1d4ae5fe78a1a9feb299cd731d23", size = 22517594, upload-time = "2026-08-05T19:21:43.364Z" }, + { url = "https://files.pythonhosted.org/packages/f8/90/4b040b8c6b40aa7d599c884a3abf34d566eabf360c33baaf3c00c2763a51/uv-0.12.2-py3-none-win32.whl", hash = "sha256:528c4bc3d41548670ec5619c339e158ea8818d88ab64337f158fd814d91397fb", size = 19400742, upload-time = "2026-08-05T19:21:46.788Z" }, + { url = "https://files.pythonhosted.org/packages/48/ae/ab4a58082da1e890b785402c17bc94d8b0aeb29fb6ab366aebfec63ad301/uv-0.12.2-py3-none-win_amd64.whl", hash = "sha256:0c837592d9f5bc88e3c0c8da9ab868e79cf26f2938e0a02b59221af084d83de0", size = 20180444, upload-time = "2026-08-05T19:21:50.152Z" }, + { url = "https://files.pythonhosted.org/packages/44/34/900d4bf7cbde72e0386cbebe392a4bd12057acb404253656b1092298be94/uv-0.12.2-py3-none-win_arm64.whl", hash = "sha256:ac36c7c26ee892855184e9346e56fa7b58a2e4f82ae7519fdd9c6d8670c49d96", size = 19122020, upload-time = "2026-08-05T19:21:53.399Z" }, ] [[package]]