Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package
python-opentelemetry-instrumentation-fastapi for openSUSE:Factory checked in at
2026-03-31 15:23:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing
/work/SRC/openSUSE:Factory/python-opentelemetry-instrumentation-fastapi (Old)
and
/work/SRC/openSUSE:Factory/.python-opentelemetry-instrumentation-fastapi.new.1999
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-instrumentation-fastapi"
Tue Mar 31 15:23:05 2026 rev:8 rq:1343795 version:0.61b0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-opentelemetry-instrumentation-fastapi/python-opentelemetry-instrumentation-fastapi.changes
2026-01-06 17:43:56.364040566 +0100
+++
/work/SRC/openSUSE:Factory/.python-opentelemetry-instrumentation-fastapi.new.1999/python-opentelemetry-instrumentation-fastapi.changes
2026-03-31 15:24:10.397029593 +0200
@@ -1,0 +2,9 @@
+Mon Mar 23 22:12:41 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to opentelemetry-opamp-client==0.1b0:
+ * Initial implementation
+ * Update client to have additional callback methods
+- update to 0.61b0:
+ * Add Python 3.14 support
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_instrumentation_fastapi-0.60b0.tar.gz
New:
----
opentelemetry_instrumentation_fastapi-0.61b0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-instrumentation-fastapi.spec ++++++
--- /var/tmp/diff_new_pack.gYqb1m/_old 2026-03-31 15:24:11.133060254 +0200
+++ /var/tmp/diff_new_pack.gYqb1m/_new 2026-03-31 15:24:11.133060254 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-instrumentation-fastapi
#
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -27,7 +27,7 @@
%{?sle15_python_module_pythons}
Name: python-opentelemetry-instrumentation-fastapi%{?psuffix}
-Version: 0.60b0
+Version: 0.61b0
Release: 0
Summary: OpenTelemetry FastAPI Instrumentation
License: Apache-2.0
++++++ opentelemetry_instrumentation_fastapi-0.60b0.tar.gz ->
opentelemetry_instrumentation_fastapi-0.61b0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opentelemetry_instrumentation_fastapi-0.60b0/PKG-INFO
new/opentelemetry_instrumentation_fastapi-0.61b0/PKG-INFO
--- old/opentelemetry_instrumentation_fastapi-0.60b0/PKG-INFO 2020-02-02
01:00:00.000000000 +0100
+++ new/opentelemetry_instrumentation_fastapi-0.61b0/PKG-INFO 2020-02-02
01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: opentelemetry-instrumentation-fastapi
-Version: 0.60b0
+Version: 0.61b0
Summary: OpenTelemetry FastAPI Instrumentation
Project-URL: Homepage,
https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-fastapi
Project-URL: Repository,
https://github.com/open-telemetry/opentelemetry-python-contrib
@@ -17,12 +17,13 @@
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.9
Requires-Dist: opentelemetry-api~=1.12
-Requires-Dist: opentelemetry-instrumentation-asgi==0.60b0
-Requires-Dist: opentelemetry-instrumentation==0.60b0
-Requires-Dist: opentelemetry-semantic-conventions==0.60b0
-Requires-Dist: opentelemetry-util-http==0.60b0
+Requires-Dist: opentelemetry-instrumentation-asgi==0.61b0
+Requires-Dist: opentelemetry-instrumentation==0.61b0
+Requires-Dist: opentelemetry-semantic-conventions==0.61b0
+Requires-Dist: opentelemetry-util-http==0.61b0
Provides-Extra: instruments
Requires-Dist: fastapi~=0.92; extra == 'instruments'
Description-Content-Type: text/x-rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opentelemetry_instrumentation_fastapi-0.60b0/pyproject.toml
new/opentelemetry_instrumentation_fastapi-0.61b0/pyproject.toml
--- old/opentelemetry_instrumentation_fastapi-0.60b0/pyproject.toml
2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_instrumentation_fastapi-0.61b0/pyproject.toml
2020-02-02 01:00:00.000000000 +0100
@@ -23,13 +23,14 @@
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.60b0",
- "opentelemetry-instrumentation-asgi == 0.60b0",
- "opentelemetry-semantic-conventions == 0.60b0",
- "opentelemetry-util-http == 0.60b0",
+ "opentelemetry-instrumentation == 0.61b0",
+ "opentelemetry-instrumentation-asgi == 0.61b0",
+ "opentelemetry-semantic-conventions == 0.61b0",
+ "opentelemetry-util-http == 0.61b0",
]
[project.optional-dependencies]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opentelemetry_instrumentation_fastapi-0.60b0/src/opentelemetry/instrumentation/fastapi/version.py
new/opentelemetry_instrumentation_fastapi-0.61b0/src/opentelemetry/instrumentation/fastapi/version.py
---
old/opentelemetry_instrumentation_fastapi-0.60b0/src/opentelemetry/instrumentation/fastapi/version.py
2020-02-02 01:00:00.000000000 +0100
+++
new/opentelemetry_instrumentation_fastapi-0.61b0/src/opentelemetry/instrumentation/fastapi/version.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__ = "0.60b0"
+__version__ = "0.61b0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opentelemetry_instrumentation_fastapi-0.60b0/tests/test_fastapi_instrumentation.py
new/opentelemetry_instrumentation_fastapi-0.61b0/tests/test_fastapi_instrumentation.py
---
old/opentelemetry_instrumentation_fastapi-0.60b0/tests/test_fastapi_instrumentation.py
2020-02-02 01:00:00.000000000 +0100
+++
new/opentelemetry_instrumentation_fastapi-0.61b0/tests/test_fastapi_instrumentation.py
2020-02-02 01:00:00.000000000 +0100
@@ -151,6 +151,9 @@
return super().matches(scope)
+SCOPE = "opentelemetry.instrumentation.fastapi"
+
+
class TestBaseFastAPI(TestBase):
def _create_app(self):
app = self._create_fastapi_app()
@@ -454,7 +457,7 @@
self.assertIn("GET /foobar", span.name)
self.assertEqual(
span.instrumentation_scope.name,
- "opentelemetry.instrumentation.fastapi",
+ SCOPE,
)
def test_uninstrument_app(self):
@@ -525,96 +528,66 @@
self._client.get("/foobar")
self._client.get("/foobar")
self._client.get("/foobar")
- metrics_list = self.memory_metrics_reader.get_metrics_data()
number_data_point_seen = False
histogram_data_point_seen = False
- self.assertTrue(len(metrics_list.resource_metrics) == 1)
- for resource_metric in metrics_list.resource_metrics:
- self.assertTrue(len(resource_metric.scope_metrics) == 1)
- for scope_metric in resource_metric.scope_metrics:
- self.assertEqual(
- scope_metric.scope.name,
- "opentelemetry.instrumentation.fastapi",
- )
- self.assertTrue(len(scope_metric.metrics) == 3)
- for metric in scope_metric.metrics:
- self.assertIn(metric.name, _expected_metric_names_old)
- data_points = list(metric.data.data_points)
- self.assertEqual(len(data_points), 1)
- for point in data_points:
- if isinstance(point, HistogramDataPoint):
- self.assertEqual(point.count, 3)
- histogram_data_point_seen = True
- if isinstance(point, NumberDataPoint):
- number_data_point_seen = True
- for attr in point.attributes:
- self.assertIn(
- attr, _recommended_attrs_old[metric.name]
- )
+ metrics = self.get_sorted_metrics(SCOPE)
+ self.assertTrue(len(metrics) == 3)
+ for metric in metrics:
+ self.assertIn(metric.name, _expected_metric_names_old)
+ data_points = list(metric.data.data_points)
+ self.assertEqual(len(data_points), 1)
+ for point in data_points:
+ if isinstance(point, HistogramDataPoint):
+ self.assertEqual(point.count, 3)
+ histogram_data_point_seen = True
+ if isinstance(point, NumberDataPoint):
+ number_data_point_seen = True
+ for attr in point.attributes:
+ self.assertIn(attr, _recommended_attrs_old[metric.name])
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
def test_fastapi_metrics_new_semconv(self):
self._client.get("/foobar")
self._client.get("/foobar")
self._client.get("/foobar")
- metrics_list = self.memory_metrics_reader.get_metrics_data()
number_data_point_seen = False
histogram_data_point_seen = False
- self.assertTrue(len(metrics_list.resource_metrics) == 1)
- for resource_metric in metrics_list.resource_metrics:
- self.assertTrue(len(resource_metric.scope_metrics) == 1)
- for scope_metric in resource_metric.scope_metrics:
- self.assertEqual(
- scope_metric.scope.name,
- "opentelemetry.instrumentation.fastapi",
- )
- self.assertTrue(len(scope_metric.metrics) == 3)
- for metric in scope_metric.metrics:
- self.assertIn(metric.name, _expected_metric_names_new)
- data_points = list(metric.data.data_points)
- self.assertEqual(len(data_points), 1)
- for point in data_points:
- if isinstance(point, HistogramDataPoint):
- self.assertEqual(point.count, 3)
- histogram_data_point_seen = True
- if isinstance(point, NumberDataPoint):
- number_data_point_seen = True
- for attr in point.attributes:
- self.assertIn(
- attr, _recommended_attrs_new[metric.name]
- )
+ metrics = self.get_sorted_metrics(SCOPE)
+ self.assertTrue(len(metrics) == 3)
+ for metric in metrics:
+ self.assertIn(metric.name, _expected_metric_names_new)
+ data_points = list(metric.data.data_points)
+ self.assertEqual(len(data_points), 1)
+ for point in data_points:
+ if isinstance(point, HistogramDataPoint):
+ self.assertEqual(point.count, 3)
+ histogram_data_point_seen = True
+ if isinstance(point, NumberDataPoint):
+ number_data_point_seen = True
+ for attr in point.attributes:
+ self.assertIn(attr, _recommended_attrs_new[metric.name])
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
def test_fastapi_metrics_both_semconv(self):
self._client.get("/foobar")
self._client.get("/foobar")
self._client.get("/foobar")
- metrics_list = self.memory_metrics_reader.get_metrics_data()
number_data_point_seen = False
histogram_data_point_seen = False
- self.assertTrue(len(metrics_list.resource_metrics) == 1)
- for resource_metric in metrics_list.resource_metrics:
- self.assertTrue(len(resource_metric.scope_metrics) == 1)
- for scope_metric in resource_metric.scope_metrics:
- self.assertEqual(
- scope_metric.scope.name,
- "opentelemetry.instrumentation.fastapi",
- )
- self.assertTrue(len(scope_metric.metrics) == 5)
- for metric in scope_metric.metrics:
- self.assertIn(metric.name, _expected_metric_names_both)
- data_points = list(metric.data.data_points)
- self.assertEqual(len(data_points), 1)
- for point in data_points:
- if isinstance(point, HistogramDataPoint):
- self.assertEqual(point.count, 3)
- histogram_data_point_seen = True
- if isinstance(point, NumberDataPoint):
- number_data_point_seen = True
- for attr in point.attributes:
- self.assertIn(
- attr, _recommended_attrs_both[metric.name]
- )
+ metrics = self.get_sorted_metrics(SCOPE)
+ self.assertTrue(len(metrics) == 5)
+ for metric in metrics:
+ self.assertIn(metric.name, _expected_metric_names_both)
+ data_points = list(metric.data.data_points)
+ self.assertEqual(len(data_points), 1)
+ for point in data_points:
+ if isinstance(point, HistogramDataPoint):
+ self.assertEqual(point.count, 3)
+ histogram_data_point_seen = True
+ if isinstance(point, NumberDataPoint):
+ number_data_point_seen = True
+ for attr in point.attributes:
+ self.assertIn(attr, _recommended_attrs_both[metric.name])
self.assertTrue(number_data_point_seen and histogram_data_point_seen)
def test_basic_metric_success(self):
@@ -638,10 +611,8 @@
HTTP_FLAVOR: "1.1",
HTTP_SERVER_NAME: "testserver",
}
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertDictEqual(
@@ -672,10 +643,8 @@
HTTP_REQUEST_METHOD: "GET",
URL_SCHEME: "https",
}
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertDictEqual(
@@ -729,10 +698,8 @@
HTTP_REQUEST_METHOD: "GET",
URL_SCHEME: "https",
}
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
@@ -803,10 +770,8 @@
HTTP_FLAVOR: "1.1",
HTTP_SERVER_NAME: "testserver",
}
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertDictEqual(
@@ -837,10 +802,8 @@
HTTP_REQUEST_METHOD: "_OTHER",
URL_SCHEME: "https",
}
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertDictEqual(
@@ -894,10 +857,8 @@
HTTP_REQUEST_METHOD: "_OTHER",
URL_SCHEME: "https",
}
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
@@ -955,10 +916,8 @@
duration = max(round((default_timer() - start) * 1000), 0)
response_size = int(response.headers.get("content-length"))
request_size = int(response.request.headers.get("content-length"))
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
@@ -980,10 +939,8 @@
duration_s = max(default_timer() - start, 0)
response_size = int(response.headers.get("content-length"))
request_size = int(response.request.headers.get("content-length"))
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
@@ -1008,10 +965,8 @@
duration_s = max(default_timer() - start, 0)
response_size = int(response.headers.get("content-length"))
request_size = int(response.request.headers.get("content-length"))
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
@@ -1036,10 +991,8 @@
self._client.get("/foobar")
self._instrumentor.uninstrument_app(self._app)
self._client.get("/foobar")
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)
@@ -1053,10 +1006,8 @@
self._instrumentor.uninstrument()
self._client.get("/foobar")
- metrics_list = self.memory_metrics_reader.get_metrics_data()
- for metric in (
- metrics_list.resource_metrics[0].scope_metrics[0].metrics
- ):
+ metrics = self.get_sorted_metrics(SCOPE)
+ for metric in metrics:
for point in list(metric.data.data_points):
if isinstance(point, HistogramDataPoint):
self.assertEqual(point.count, 1)