Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-opentelemetry-exporter-otlp-proto-http for openSUSE:Factory checked in at 2025-05-27 18:44:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-http (Old) and /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-http.new.2732 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-exporter-otlp-proto-http" Tue May 27 18:44:05 2025 rev:8 rq:1280595 version:1.33.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-http/python-opentelemetry-exporter-otlp-proto-http.changes 2025-02-26 17:19:45.062296075 +0100 +++ /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-http.new.2732/python-opentelemetry-exporter-otlp-proto-http.changes 2025-05-27 18:44:13.569691528 +0200 @@ -1,0 +2,16 @@ +Mon May 26 07:21:12 UTC 2025 - Nico Krapp <nico.kr...@suse.com> + +- Update to 1.33.1 + * Remove log messages from BatchLogRecordProcessor.emit, this caused the + program to crash at shutdown with a max recursion error +- Update to 1.33.0 + * Fix intermittent Connection aborted error when using otlp/http exporters + * opentelemetry-sdk: use stable code attributes: + code.function -> code.function.name, code.lineno -> code.line.number, + code.filepath -> code.file.path + * Fix serialization of extended attributes for logs signal + * Handle OTEL_PROPAGATORS contains None + * docs: updated and added to the metrics and log examples + * Bump semantic conventions to 1.33.0 + +------------------------------------------------------------------- Old: ---- opentelemetry_exporter_otlp_proto_http-1.30.0.tar.gz New: ---- opentelemetry_exporter_otlp_proto_http-1.33.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-opentelemetry-exporter-otlp-proto-http.spec ++++++ --- /var/tmp/diff_new_pack.GqbYtg/_old 2025-05-27 18:44:14.169716777 +0200 +++ /var/tmp/diff_new_pack.GqbYtg/_new 2025-05-27 18:44:14.169716777 +0200 @@ -17,7 +17,7 @@ Name: python-opentelemetry-exporter-otlp-proto-http -Version: 1.30.0 +Version: 1.33.1 Release: 0 Summary: OpenTelemetry Collector Protobuf over HTTP Exporter License: Apache-2.0 @@ -33,7 +33,7 @@ BuildRequires: %{python_module opentelemetry-exporter-otlp-proto-common = %{version}} BuildRequires: %{python_module opentelemetry-proto = %{version}} BuildRequires: %{python_module opentelemetry-sdk >= 1.23.0} -BuildRequires: %{python_module opentelemetry-test-utils = 0.51b0} +BuildRequires: %{python_module opentelemetry-test-utils = 0.54b1} BuildRequires: %{python_module pytest} BuildRequires: %{python_module requests >= 2.7} BuildRequires: %{python_module responses >= 0.22.0} ++++++ opentelemetry_exporter_otlp_proto_http-1.30.0.tar.gz -> opentelemetry_exporter_otlp_proto_http-1.33.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.30.0/PKG-INFO new/opentelemetry_exporter_otlp_proto_http-1.33.1/PKG-INFO --- old/opentelemetry_exporter_otlp_proto_http-1.30.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 +++ new/opentelemetry_exporter_otlp_proto_http-1.33.1/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: opentelemetry-exporter-otlp-proto-http -Version: 1.30.0 +Version: 1.33.1 Summary: OpenTelemetry Collector Protobuf over HTTP Exporter Project-URL: Homepage, https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/opentelemetry-exporter-otlp-proto-http Project-URL: Repository, https://github.com/open-telemetry/opentelemetry-python @@ -24,9 +24,9 @@ Requires-Dist: deprecated>=1.2.6 Requires-Dist: googleapis-common-protos~=1.52 Requires-Dist: opentelemetry-api~=1.15 -Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.30.0 -Requires-Dist: opentelemetry-proto==1.30.0 -Requires-Dist: opentelemetry-sdk~=1.30.0 +Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.33.1 +Requires-Dist: opentelemetry-proto==1.33.1 +Requires-Dist: opentelemetry-sdk~=1.33.1 Requires-Dist: requests~=2.7 Description-Content-Type: text/x-rst diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.30.0/pyproject.toml new/opentelemetry_exporter_otlp_proto_http-1.33.1/pyproject.toml --- old/opentelemetry_exporter_otlp_proto_http-1.30.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100 +++ new/opentelemetry_exporter_otlp_proto_http-1.33.1/pyproject.toml 2020-02-02 01:00:00.000000000 +0100 @@ -31,9 +31,9 @@ "Deprecated >= 1.2.6", "googleapis-common-protos ~= 1.52", "opentelemetry-api ~= 1.15", - "opentelemetry-proto == 1.30.0", - "opentelemetry-sdk ~= 1.30.0", - "opentelemetry-exporter-otlp-proto-common == 1.30.0", + "opentelemetry-proto == 1.33.1", + "opentelemetry-sdk ~= 1.33.1", + "opentelemetry-exporter-otlp-proto-common == 1.33.1", "requests ~= 2.7", ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py --- old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100 +++ new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100 @@ -21,6 +21,7 @@ from typing import Dict, Optional, Sequence import requests +from requests.exceptions import ConnectionError from opentelemetry.exporter.otlp.proto.common._internal import ( _create_exp_backoff_generator, @@ -133,13 +134,27 @@ elif self._compression == Compression.Deflate: data = zlib.compress(serialized_data) - return self._session.post( - url=self._endpoint, - data=data, - verify=self._certificate_file, - timeout=self._timeout, - cert=self._client_cert, - ) + # By default, keep-alive is enabled in Session's request + # headers. Backends may choose to close the connection + # while a post happens which causes an unhandled + # exception. This try/except will retry the post on such exceptions + try: + resp = self._session.post( + url=self._endpoint, + data=data, + verify=self._certificate_file, + timeout=self._timeout, + cert=self._client_cert, + ) + except ConnectionError: + resp = self._session.post( + url=self._endpoint, + data=data, + verify=self._certificate_file, + timeout=self._timeout, + cert=self._client_cert, + ) + return resp @staticmethod def _retryable(resp: requests.Response) -> bool: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py --- old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100 +++ new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100 @@ -10,6 +10,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations import gzip import logging @@ -23,12 +24,12 @@ Dict, List, Mapping, - Optional, Sequence, ) import requests from deprecated import deprecated +from requests.exceptions import ConnectionError from opentelemetry.exporter.otlp.proto.common._internal import ( _create_exp_backoff_generator, @@ -40,7 +41,10 @@ from opentelemetry.exporter.otlp.proto.common.metrics_encoder import ( encode_metrics, ) -from opentelemetry.exporter.otlp.proto.http import Compression +from opentelemetry.exporter.otlp.proto.http import ( + _OTLP_HTTP_HEADERS, + Compression, +) from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ( # noqa: F401 ExportMetricsServiceRequest, ) @@ -101,16 +105,17 @@ def __init__( self, - endpoint: Optional[str] = None, - certificate_file: Optional[str] = None, - client_key_file: Optional[str] = None, - client_certificate_file: Optional[str] = None, - headers: Optional[Dict[str, str]] = None, - timeout: Optional[int] = None, - compression: Optional[Compression] = None, - session: Optional[requests.Session] = None, - preferred_temporality: Dict[type, AggregationTemporality] = None, - preferred_aggregation: Dict[type, Aggregation] = None, + endpoint: str | None = None, + certificate_file: str | None = None, + client_key_file: str | None = None, + client_certificate_file: str | None = None, + headers: dict[str, str] | None = None, + timeout: int | None = None, + compression: Compression | None = None, + session: requests.Session | None = None, + preferred_temporality: dict[type, AggregationTemporality] + | None = None, + preferred_aggregation: dict[type, Aggregation] | None = None, ): self._endpoint = endpoint or environ.get( OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, @@ -151,9 +156,7 @@ self._compression = compression or _compression_from_env() self._session = session or requests.Session() self._session.headers.update(self._headers) - self._session.headers.update( - {"Content-Type": "application/x-protobuf"} - ) + self._session.headers.update(_OTLP_HTTP_HEADERS) if self._compression is not Compression.NoCompression: self._session.headers.update( {"Content-Encoding": self._compression.value} @@ -173,13 +176,27 @@ elif self._compression == Compression.Deflate: data = zlib.compress(serialized_data) - return self._session.post( - url=self._endpoint, - data=data, - verify=self._certificate_file, - timeout=self._timeout, - cert=self._client_cert, - ) + # By default, keep-alive is enabled in Session's request + # headers. Backends may choose to close the connection + # while a post happens which causes an unhandled + # exception. This try/except will retry the post on such exceptions + try: + resp = self._session.post( + url=self._endpoint, + data=data, + verify=self._certificate_file, + timeout=self._timeout, + cert=self._client_cert, + ) + except ConnectionError: + resp = self._session.post( + url=self._endpoint, + data=data, + verify=self._certificate_file, + timeout=self._timeout, + cert=self._client_cert, + ) + return resp @staticmethod def _retryable(resp: requests.Response) -> bool: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py --- old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100 +++ new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100 @@ -21,6 +21,7 @@ from typing import Dict, Optional import requests +from requests.exceptions import ConnectionError from opentelemetry.exporter.otlp.proto.common._internal import ( _create_exp_backoff_generator, @@ -130,13 +131,27 @@ elif self._compression == Compression.Deflate: data = zlib.compress(serialized_data) - return self._session.post( - url=self._endpoint, - data=data, - verify=self._certificate_file, - timeout=self._timeout, - cert=self._client_cert, - ) + # By default, keep-alive is enabled in Session's request + # headers. Backends may choose to close the connection + # while a post happens which causes an unhandled + # exception. This try/except will retry the post on such exceptions + try: + resp = self._session.post( + url=self._endpoint, + data=data, + verify=self._certificate_file, + timeout=self._timeout, + cert=self._client_cert, + ) + except ConnectionError: + resp = self._session.post( + url=self._endpoint, + data=data, + verify=self._certificate_file, + timeout=self._timeout, + cert=self._client_cert, + ) + return resp @staticmethod def _retryable(resp: requests.Response) -> bool: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py --- old/opentelemetry_exporter_otlp_proto_http-1.30.0/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py 2020-02-02 01:00:00.000000000 +0100 +++ new/opentelemetry_exporter_otlp_proto_http-1.33.1/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py 2020-02-02 01:00:00.000000000 +0100 @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "1.30.0" +__version__ = "1.33.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.30.0/tests/metrics/test_otlp_metrics_exporter.py new/opentelemetry_exporter_otlp_proto_http-1.33.1/tests/metrics/test_otlp_metrics_exporter.py --- old/opentelemetry_exporter_otlp_proto_http-1.30.0/tests/metrics/test_otlp_metrics_exporter.py 2020-02-02 01:00:00.000000000 +0100 +++ new/opentelemetry_exporter_otlp_proto_http-1.33.1/tests/metrics/test_otlp_metrics_exporter.py 2020-02-02 01:00:00.000000000 +0100 @@ -32,6 +32,7 @@ DEFAULT_TIMEOUT, OTLPMetricExporter, ) +from opentelemetry.exporter.otlp.proto.http.version import __version__ from opentelemetry.sdk.environment_variables import ( OTEL_EXPORTER_OTLP_CERTIFICATE, OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE, @@ -124,6 +125,15 @@ self.assertIs(exporter._compression, DEFAULT_COMPRESSION) self.assertEqual(exporter._headers, {}) self.assertIsInstance(exporter._session, Session) + self.assertIn("User-Agent", exporter._session.headers) + self.assertEqual( + exporter._session.headers.get("Content-Type"), + "application/x-protobuf", + ) + self.assertEqual( + exporter._session.headers.get("User-Agent"), + "OTel-OTLP-Exporter-Python/" + __version__, + ) @patch.dict( "os.environ",