From f4f3042f85fa68565c4da3f96d437b15d78e1063 Mon Sep 17 00:00:00 2001
From: Povilas Versockas
Date: Wed, 22 May 2024 07:48:54 +0300
Subject: [PATCH 01/24] fix(async-io): check for __name__ atribute when tracing
coroutine (#2521)
---
CHANGELOG.md | 2 +
.../instrumentation/asyncio/__init__.py | 2 +
.../tests/test_asyncio_anext.py | 56 +++++++++++++++++++
3 files changed, 60 insertions(+)
create mode 100644 instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_anext.py
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d10983c10b..b963cfddc2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -53,6 +53,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#2474](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2474))
- `opentelemetry-instrumentation-elasticsearch` Improved support for version 8
([#2420](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2420))
+- `opentelemetry-instrumentation-asyncio` Check for __name__ attribute in the coroutine
+ ([#2521](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2521))
## Version 1.24.0/0.45b0 (2024-03-28)
diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py
index 72aa5fd2aa..6d82da6cd0 100644
--- a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py
@@ -261,6 +261,8 @@ def trace_item(self, coro_or_future):
return coro_or_future
async def trace_coroutine(self, coro):
+ if not hasattr(coro, "__name__"):
+ return
start = default_timer()
attr = {
"type": "coroutine",
diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_anext.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_anext.py
new file mode 100644
index 0000000000..9ce3fc4b33
--- /dev/null
+++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_anext.py
@@ -0,0 +1,56 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+import asyncio
+from unittest.mock import patch
+
+# pylint: disable=no-name-in-module
+from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor
+from opentelemetry.instrumentation.asyncio.environment_variables import (
+ OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE,
+)
+from opentelemetry.test.test_base import TestBase
+from opentelemetry.trace import get_tracer
+
+
+class TestAsyncioAnext(TestBase):
+ @patch.dict(
+ "os.environ",
+ {OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE: "async_func"},
+ )
+ def setUp(self):
+ super().setUp()
+ AsyncioInstrumentor().instrument()
+ self._tracer = get_tracer(
+ __name__,
+ )
+
+ def tearDown(self):
+ super().tearDown()
+ AsyncioInstrumentor().uninstrument()
+
+ # Asyncio anext() does not have __name__ attribute, which is used to determine if the coroutine should be traced.
+ # This test is to ensure that the instrumentation does not break when the coroutine does not have __name__ attribute.
+ def test_asyncio_anext(self):
+ async def main():
+ async def async_gen():
+ for it in range(2):
+ yield it
+
+ async_gen_instance = async_gen()
+ agen = anext(async_gen_instance)
+ await asyncio.create_task(agen)
+
+ asyncio.run(main())
+ spans = self.memory_exporter.get_finished_spans()
+ self.assertEqual(len(spans), 0)
From c28f9b837f386cffd9b0f8800f7653a85ca5c60e Mon Sep 17 00:00:00 2001
From: Jeremy Voss
Date: Wed, 22 May 2024 10:45:10 -0700
Subject: [PATCH 02/24] Update functions detector readme (#2533)
---
.../README.rst | 21 ++++++++++---------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/resource/opentelemetry-resource-detector-azure/README.rst b/resource/opentelemetry-resource-detector-azure/README.rst
index baf2dddbbe..19a0f97f32 100644
--- a/resource/opentelemetry-resource-detector-azure/README.rst
+++ b/resource/opentelemetry-resource-detector-azure/README.rst
@@ -9,6 +9,7 @@ OpenTelemetry Resource detectors for Azure
This library contains OpenTelemetry `Resource Detectors `_ for the following Azure resources:
* `Azure App Service `_
* `Azure Virtual Machines `_
+ * `Azure Functions (Experimental) `_
Installation
------------
@@ -60,16 +61,6 @@ The Azure App Service Resource Detector sets the following Resource Attributes:
* ``service.instance.id`` set to the value of the ``WEBSITE_INSTANCE_ID`` environment variable.
* ``azure.app.service.stamp`` set to the value of the ``WEBSITE_HOME_STAMPNAME`` environment variable.
- The Azure Functions Resource Detector sets the following Resource Attributes:
- * ``service.name`` set to the value of the ``WEBSITE_SITE_NAME`` environment variable.
- * ``process.id`` set to the process ID collected from the running process.
- * ``cloud.platform`` set to ``azure_functions``.
- * ``cloud.provider`` set to ``azure``.
- * ``cloud.resource_id`` set using the ``WEBSITE_RESOURCE_GROUP``, ``WEBSITE_OWNER_NAME``, and ``WEBSITE_SITE_NAME`` environment variables.
- * ``cloud.region`` set to the value of the ``REGION_NAME`` environment variable.
- * ``faas.instance`` set to the value of the ``WEBSITE_INSTANCE_ID`` environment variable.
- * ``faas.max_memory`` set to the value of the ``WEBSITE_MEMORY_LIMIT_MB`` environment variable.
-
The Azure VM Resource Detector sets the following Resource Attributes according to the response from the `Azure Metadata Service `_:
* ``azure.vm.scaleset.name`` set to the value of the ``vmScaleSetName`` field.
* ``azure.vm.sku`` set to the value of the ``sku`` field.
@@ -84,6 +75,16 @@ The Azure VM Resource Detector sets the following Resource Attributes according
* ``os.version`` set to the value of the ``version`` field.
* ``service.instance.id`` set to the value of the ``vmId`` field.
+The Azure Functions Resource Detector is currently experimental. It sets the following Resource Attributes:
+ * ``service.name`` set to the value of the ``WEBSITE_SITE_NAME`` environment variable.
+ * ``process.id`` set to the process ID collected from the running process.
+ * ``cloud.platform`` set to ``azure_functions``.
+ * ``cloud.provider`` set to ``azure``.
+ * ``cloud.resource_id`` set using the ``WEBSITE_RESOURCE_GROUP``, ``WEBSITE_OWNER_NAME``, and ``WEBSITE_SITE_NAME`` environment variables.
+ * ``cloud.region`` set to the value of the ``REGION_NAME`` environment variable.
+ * ``faas.instance`` set to the value of the ``WEBSITE_INSTANCE_ID`` environment variable.
+ * ``faas.max_memory`` set to the value of the ``WEBSITE_MEMORY_LIMIT_MB`` environment variable.
+
For more information, see the `Semantic Conventions for Cloud Resource Attributes `_.
References
From da75015fade9f8adf58416fdeb8684a4a263d7b8 Mon Sep 17 00:00:00 2001
From: Adin Hodovic
Date: Thu, 23 May 2024 11:02:46 +0200
Subject: [PATCH 03/24] fix: Ensure compability with Psycopg3 to extract libpq
build version (#2500)
* fix: Ensure compability with Psycopg3 to extract libpq build version
Struggling with getting dbapi and psycopg3 working.
Think this is the error, __libpq_version does not exist on psycopg3
https://github.com/psycopg/psycopg/blob/master/psycopg/psycopg/pq/pq_ctypes.py#L1220
* docs: Add changelog entry
* docs: Fix spelling
---------
Co-authored-by: Riccardo Magliocchetti
Co-authored-by: Shalev Roda <65566801+shalevr@users.noreply.github.com>
---
CHANGELOG.md | 4 +--
.../instrumentation/dbapi/__init__.py | 9 ++++++-
.../tests/test_dbapi_integration.py | 26 +++++++++++++++++++
3 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b963cfddc2..038706f35c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
+- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version (#2500)[https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500]
- `opentelemetry-instrumentation-grpc` AioClientInterceptor should propagate with a Metadata object
([#2363](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2363))
- `opentelemetry-instrumentation-boto3sqs` Instrument Session and resource
@@ -126,7 +127,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#1959](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1959))
- `opentelemetry-resource-detector-azure` Added dependency for Cloud Resource ID attribute
([#2072](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2072))
-
+
## Version 1.21.0/0.42b0 (2023-11-01)
### Added
@@ -1540,4 +1541,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `opentelemetry-resource-detector-azure` Suppress instrumentation for `urllib` call
([#2178](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2178))
- AwsLambdaInstrumentor handles and re-raises function exception ([#2245](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2245))
-
diff --git a/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/__init__.py b/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/__init__.py
index b0acbed185..0857d2989b 100644
--- a/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/__init__.py
@@ -427,12 +427,19 @@ def traced_execution(
if args and self._commenter_enabled:
try:
args_list = list(args)
+ if hasattr(self._connect_module, "__libpq_version__"):
+ libpq_version = self._connect_module.__libpq_version__
+ else:
+ libpq_version = (
+ self._connect_module.pq.__build_version__
+ )
+
commenter_data = {
# Psycopg2/framework information
"db_driver": f"psycopg2:{self._connect_module.__version__.split(' ')[0]}",
"dbapi_threadsafety": self._connect_module.threadsafety,
"dbapi_level": self._connect_module.apilevel,
- "libpq_version": self._connect_module.__libpq_version__,
+ "libpq_version": libpq_version,
"driver_paramstyle": self._connect_module.paramstyle,
}
if self._commenter_options.get(
diff --git a/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py b/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py
index 0d19ce8373..d0835e93e6 100644
--- a/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py
+++ b/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py
@@ -275,6 +275,32 @@ def test_executemany_comment(self):
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
)
+ def test_compatible_build_version_psycopg_psycopg2_libpq(self):
+ connect_module = mock.MagicMock()
+ connect_module.__version__ = mock.MagicMock()
+ connect_module.pq = mock.MagicMock()
+ connect_module.pq.__build_version__ = 123
+ connect_module.apilevel = 123
+ connect_module.threadsafety = 123
+ connect_module.paramstyle = "test"
+
+ db_integration = dbapi.DatabaseApiIntegration(
+ "testname",
+ "testcomponent",
+ enable_commenter=True,
+ commenter_options={"db_driver": False, "dbapi_level": False},
+ connect_module=connect_module,
+ )
+ mock_connection = db_integration.wrapped_connection(
+ mock_connect, {}, {}
+ )
+ cursor = mock_connection.cursor()
+ cursor.executemany("Select 1;")
+ self.assertRegex(
+ cursor.query,
+ r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
+ )
+
def test_executemany_flask_integration_comment(self):
connect_module = mock.MagicMock()
connect_module.__version__ = mock.MagicMock()
From 66a107fa49fc6d264ae6d690c09c9f04bc4a5dd7 Mon Sep 17 00:00:00 2001
From: Povilas Versockas
Date: Fri, 24 May 2024 02:28:50 +0300
Subject: [PATCH 04/24] fix(async-io): return coro when __name__ is not
present (#2541)
---
.../src/opentelemetry/instrumentation/asyncio/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py
index 6d82da6cd0..fc1b535270 100644
--- a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py
@@ -262,7 +262,7 @@ def trace_item(self, coro_or_future):
async def trace_coroutine(self, coro):
if not hasattr(coro, "__name__"):
- return
+ return coro
start = default_timer()
attr = {
"type": "coroutine",
From 78285a5795db18e25126f1452a92a536a611b1be Mon Sep 17 00:00:00 2001
From: Leighton Chen
Date: Fri, 24 May 2024 10:49:18 -0700
Subject: [PATCH 05/24] Pin codespell version to fix builds (#2550)
---
tox.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tox.ini b/tox.ini
index fecc9e5af7..0f1e8badcc 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1206,7 +1206,7 @@ commands =
basepython: python3
recreate = True
deps =
- codespell
+ codespell==2.2.6
commands =
codespell
From c1a51fde96c0f53ca185c3816be9fe69cba4f528 Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti
Date: Fri, 24 May 2024 19:57:29 +0200
Subject: [PATCH 06/24] Pre Python 3.12 enablement fixes (#2529)
---
.../test-requirements.txt | 2 +-
.../tests/test_botocore_dynamodb.py | 12 ++++++------
.../tests/test_utils.py | 2 +-
tox.ini | 4 ++--
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt
index 9dcf9f9c0d..7c11b1e063 100644
--- a/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt
+++ b/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt
@@ -28,7 +28,7 @@ jsonschema==4.21.1
jsonschema-specifications==2023.12.1
junit-xml==1.9
MarkupSafe==2.0.1
-moto==2.2.20
+moto==3.1.19
mpmath==1.3.0
networkx==3.1
packaging==23.2
diff --git a/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_dynamodb.py b/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_dynamodb.py
index 1b7f5bb0cb..12ebe8f2b7 100644
--- a/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_dynamodb.py
+++ b/instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_dynamodb.py
@@ -324,14 +324,14 @@ def test_get_item(self):
Key={"id": {"S": "1"}},
ConsistentRead=True,
AttributesToGet=["id"],
- ProjectionExpression="1,2",
+ ProjectionExpression="PE",
ReturnConsumedCapacity="TOTAL",
)
span = self.assert_span("GetItem")
self.assert_table_names(span, self.default_table_name)
self.assert_consistent_read(span, True)
- self.assert_projection(span, "1,2")
+ self.assert_projection(span, "PE")
self.assert_consumed_capacity(span, self.default_table_name)
@mock_dynamodb2
@@ -390,7 +390,7 @@ def test_query(self):
}
},
ScanIndexForward=True,
- ProjectionExpression="1,2",
+ ProjectionExpression="PE",
ReturnConsumedCapacity="TOTAL",
)
@@ -403,7 +403,7 @@ def test_query(self):
self.assert_consistent_read(span, True)
self.assert_index_name(span, "lsi")
self.assert_limit(span, 42)
- self.assert_projection(span, "1,2")
+ self.assert_projection(span, "PE")
self.assert_select(span, "ALL_ATTRIBUTES")
self.assert_consumed_capacity(span, self.default_table_name)
@@ -419,7 +419,7 @@ def test_scan(self):
Select="ALL_ATTRIBUTES",
TotalSegments=17,
Segment=21,
- ProjectionExpression="1,2",
+ ProjectionExpression="PE",
ConsistentRead=True,
ReturnConsumedCapacity="TOTAL",
)
@@ -440,7 +440,7 @@ def test_scan(self):
self.assert_consistent_read(span, True)
self.assert_index_name(span, "lsi")
self.assert_limit(span, 42)
- self.assert_projection(span, "1,2")
+ self.assert_projection(span, "PE")
self.assert_select(span, "ALL_ATTRIBUTES")
self.assert_consumed_capacity(span, self.default_table_name)
diff --git a/instrumentation/opentelemetry-instrumentation-pika/tests/test_utils.py b/instrumentation/opentelemetry-instrumentation-pika/tests/test_utils.py
index d651ea64c9..7c0aa7a715 100644
--- a/instrumentation/opentelemetry-instrumentation-pika/tests/test_utils.py
+++ b/instrumentation/opentelemetry-instrumentation-pika/tests/test_utils.py
@@ -558,7 +558,7 @@ def test_decorate_deque_proxy(
self.assertEqual(res, evt)
generator_info.pending_events.popleft.assert_called_once()
extract.assert_not_called()
- context_get_current.not_called()
+ context_get_current.assert_not_called()
context_detach.assert_called_once()
context_attach.assert_not_called()
get_span.assert_not_called()
diff --git a/tox.ini b/tox.ini
index 0f1e8badcc..d6fb9eee10 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1198,8 +1198,8 @@ deps =
-r dev-requirements.txt
commands =
- black --config {toxinidir}/pyproject.toml {{toxinidir}} --diff --check
- isort --settings-path {toxinidir}/.isort.cfg {{toxinidir}} --diff --check-only
+ black --config {toxinidir}/pyproject.toml {toxinidir} --diff --check
+ isort --settings-path {toxinidir}/.isort.cfg {toxinidir} --diff --check-only
flake8 --config {toxinidir}/.flake8 {toxinidir}
[testenv:spellcheck]
From e6409568c11f5ec1341e85770f2f01dded676d7a Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti
Date: Fri, 24 May 2024 20:12:53 +0200
Subject: [PATCH 07/24] Reenable pylint broad exception (#2536)
---
.pylintrc | 2 +-
.../tests/test_aiopg_integration.py | 11 +++++++----
.../tests/mocks/lambda_function.py | 1 +
.../tests/test_dbapi_integration.py | 3 +++
.../tests/test_aio_client_interceptor_hooks.py | 4 ++--
.../tests/test_client_interceptor_hooks.py | 4 ++--
.../tests/test_psycopg_integration.py | 6 +++---
.../tests/test_urllib_integration.py | 2 +-
8 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/.pylintrc b/.pylintrc
index 114dadef75..9f6c80faa9 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -492,4 +492,4 @@ min-public-methods=2
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception".
-overgeneral-exceptions=Exception
+overgeneral-exceptions=builtins.Exception
diff --git a/instrumentation/opentelemetry-instrumentation-aiopg/tests/test_aiopg_integration.py b/instrumentation/opentelemetry-instrumentation-aiopg/tests/test_aiopg_integration.py
index fb76bd0f38..c497ae4564 100644
--- a/instrumentation/opentelemetry-instrumentation-aiopg/tests/test_aiopg_integration.py
+++ b/instrumentation/opentelemetry-instrumentation-aiopg/tests/test_aiopg_integration.py
@@ -17,6 +17,7 @@
from unittest.mock import MagicMock
import aiopg
+import psycopg2
import opentelemetry.instrumentation.aiopg
from opentelemetry import trace as trace_api
@@ -384,7 +385,9 @@ def test_span_failed(self):
span.attributes[SpanAttributes.DB_STATEMENT], "Test query"
)
self.assertIs(span.status.status_code, trace_api.StatusCode.ERROR)
- self.assertEqual(span.status.description, "Exception: Test Exception")
+ self.assertEqual(
+ span.status.description, "ProgrammingError: Test Exception"
+ )
def test_executemany(self):
db_integration = AiopgIntegration(self.tracer, "testcomponent")
@@ -570,17 +573,17 @@ class MockCursor:
# pylint: disable=unused-argument, no-self-use
async def execute(self, query, params=None, throw_exception=False):
if throw_exception:
- raise Exception("Test Exception")
+ raise psycopg2.ProgrammingError("Test Exception")
# pylint: disable=unused-argument, no-self-use
async def executemany(self, query, params=None, throw_exception=False):
if throw_exception:
- raise Exception("Test Exception")
+ raise psycopg2.ProgrammingError("Test Exception")
# pylint: disable=unused-argument, no-self-use
async def callproc(self, query, params=None, throw_exception=False):
if throw_exception:
- raise Exception("Test Exception")
+ raise psycopg2.ProgrammingError("Test Exception")
def close(self):
pass
diff --git a/instrumentation/opentelemetry-instrumentation-aws-lambda/tests/mocks/lambda_function.py b/instrumentation/opentelemetry-instrumentation-aws-lambda/tests/mocks/lambda_function.py
index a878d0f06a..539c896a0b 100644
--- a/instrumentation/opentelemetry-instrumentation-aws-lambda/tests/mocks/lambda_function.py
+++ b/instrumentation/opentelemetry-instrumentation-aws-lambda/tests/mocks/lambda_function.py
@@ -22,4 +22,5 @@ def rest_api_handler(event, context):
def handler_exc(event, context):
+ # pylint: disable=broad-exception-raised
raise Exception("500 internal server error")
diff --git a/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py b/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py
index d0835e93e6..eb2d628a3a 100644
--- a/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py
+++ b/instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py
@@ -419,11 +419,13 @@ def __init__(self) -> None:
# pylint: disable=unused-argument, no-self-use
def execute(self, query, params=None, throw_exception=False):
if throw_exception:
+ # pylint: disable=broad-exception-raised
raise Exception("Test Exception")
# pylint: disable=unused-argument, no-self-use
def executemany(self, query, params=None, throw_exception=False):
if throw_exception:
+ # pylint: disable=broad-exception-raised
raise Exception("Test Exception")
self.query = query
self.params = params
@@ -431,4 +433,5 @@ def executemany(self, query, params=None, throw_exception=False):
# pylint: disable=unused-argument, no-self-use
def callproc(self, query, params=None, throw_exception=False):
if throw_exception:
+ # pylint: disable=broad-exception-raised
raise Exception("Test Exception")
diff --git a/instrumentation/opentelemetry-instrumentation-grpc/tests/test_aio_client_interceptor_hooks.py b/instrumentation/opentelemetry-instrumentation-grpc/tests/test_aio_client_interceptor_hooks.py
index fe906b26c1..9086d8b0f7 100644
--- a/instrumentation/opentelemetry-instrumentation-grpc/tests/test_aio_client_interceptor_hooks.py
+++ b/instrumentation/opentelemetry-instrumentation-grpc/tests/test_aio_client_interceptor_hooks.py
@@ -47,11 +47,11 @@ def response_hook(span, response):
def request_hook_with_exception(_span, _request):
- raise Exception()
+ raise Exception() # pylint: disable=broad-exception-raised
def response_hook_with_exception(_span, _response):
- raise Exception()
+ raise Exception() # pylint: disable=broad-exception-raised
@pytest.mark.asyncio
diff --git a/instrumentation/opentelemetry-instrumentation-grpc/tests/test_client_interceptor_hooks.py b/instrumentation/opentelemetry-instrumentation-grpc/tests/test_client_interceptor_hooks.py
index aeecffc71c..ac65c76c34 100644
--- a/instrumentation/opentelemetry-instrumentation-grpc/tests/test_client_interceptor_hooks.py
+++ b/instrumentation/opentelemetry-instrumentation-grpc/tests/test_client_interceptor_hooks.py
@@ -73,11 +73,11 @@ def response_hook(span, response):
def request_hook_with_exception(_span, _request):
- raise Exception()
+ raise Exception() # pylint: disable=broad-exception-raised
def response_hook_with_exception(_span, _response):
- raise Exception()
+ raise Exception() # pylint: disable=broad-exception-raised
class TestHooks(TestBase):
diff --git a/instrumentation/opentelemetry-instrumentation-psycopg/tests/test_psycopg_integration.py b/instrumentation/opentelemetry-instrumentation-psycopg/tests/test_psycopg_integration.py
index 4fbcac6042..e2b3ed917a 100644
--- a/instrumentation/opentelemetry-instrumentation-psycopg/tests/test_psycopg_integration.py
+++ b/instrumentation/opentelemetry-instrumentation-psycopg/tests/test_psycopg_integration.py
@@ -53,17 +53,17 @@ def __init__(self, *args, **kwargs):
# pylint: disable=unused-argument, no-self-use
async def execute(self, query, params=None, throw_exception=False):
if throw_exception:
- raise Exception("Test Exception")
+ raise psycopg.Error("Test Exception")
# pylint: disable=unused-argument, no-self-use
async def executemany(self, query, params=None, throw_exception=False):
if throw_exception:
- raise Exception("Test Exception")
+ raise psycopg.Error("Test Exception")
# pylint: disable=unused-argument, no-self-use
async def callproc(self, query, params=None, throw_exception=False):
if throw_exception:
- raise Exception("Test Exception")
+ raise psycopg.Error("Test Exception")
async def __aenter__(self, *args, **kwargs):
return self
diff --git a/instrumentation/opentelemetry-instrumentation-urllib/tests/test_urllib_integration.py b/instrumentation/opentelemetry-instrumentation-urllib/tests/test_urllib_integration.py
index 36189e12c1..f73f0d1b97 100644
--- a/instrumentation/opentelemetry-instrumentation-urllib/tests/test_urllib_integration.py
+++ b/instrumentation/opentelemetry-instrumentation-urllib/tests/test_urllib_integration.py
@@ -99,7 +99,7 @@ def timeout_exception_callback(*_, **__):
@staticmethod
def base_exception_callback(*_, **__):
- raise Exception("test")
+ raise Exception("test") # pylint: disable=broad-exception-raised
def assert_span(self, exporter=None, num_spans=1):
if exporter is None:
From 65b4f850a03135bff18a95e62465da881c25f0ec Mon Sep 17 00:00:00 2001
From: Tim Hutchinson
Date: Fri, 24 May 2024 15:06:53 -0400
Subject: [PATCH 08/24] Preserve brackets around literal IPv6 hosts (#2552)
---
CHANGELOG.md | 1 +
.../src/opentelemetry/util/http/__init__.py | 6 +----
.../tests/test_remove_credentials.py | 27 +++++++++++++++++++
3 files changed, 29 insertions(+), 5 deletions(-)
create mode 100644 util/opentelemetry-util-http/tests/test_remove_credentials.py
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 038706f35c..3232e6fef8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -56,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#2420](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2420))
- `opentelemetry-instrumentation-asyncio` Check for __name__ attribute in the coroutine
([#2521](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2521))
+- `opentelemetry-util-http` Preserve brackets around literal IPv6 hosts ([#2552](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2552))
## Version 1.24.0/0.45b0 (2024-03-28)
diff --git a/util/opentelemetry-util-http/src/opentelemetry/util/http/__init__.py b/util/opentelemetry-util-http/src/opentelemetry/util/http/__init__.py
index 1f7ce98937..e8a2cf2034 100644
--- a/util/opentelemetry-util-http/src/opentelemetry/util/http/__init__.py
+++ b/util/opentelemetry-util-http/src/opentelemetry/util/http/__init__.py
@@ -166,11 +166,7 @@ def remove_url_credentials(url: str) -> str:
parsed = urlparse(url)
if all([parsed.scheme, parsed.netloc]): # checks for valid url
parsed_url = urlparse(url)
- netloc = (
- (":".join(((parsed_url.hostname or ""), str(parsed_url.port))))
- if parsed_url.port
- else (parsed_url.hostname or "")
- )
+ _, _, netloc = parsed.netloc.rpartition("@")
return urlunparse(
(
parsed_url.scheme,
diff --git a/util/opentelemetry-util-http/tests/test_remove_credentials.py b/util/opentelemetry-util-http/tests/test_remove_credentials.py
new file mode 100644
index 0000000000..b6243145f5
--- /dev/null
+++ b/util/opentelemetry-util-http/tests/test_remove_credentials.py
@@ -0,0 +1,27 @@
+import unittest
+
+from opentelemetry.util.http import remove_url_credentials
+
+
+class TestRemoveUrlCredentials(unittest.TestCase):
+ def test_remove_no_credentials(self):
+ url = "http://opentelemetry.io:8080/test/path?query=value"
+ cleaned_url = remove_url_credentials(url)
+ self.assertEqual(cleaned_url, url)
+
+ def test_remove_credentials(self):
+ url = "http://someuser:somepass@opentelemetry.io:8080/test/path?query=value"
+ cleaned_url = remove_url_credentials(url)
+ self.assertEqual(
+ cleaned_url, "http://opentelemetry.io:8080/test/path?query=value"
+ )
+
+ def test_remove_credentials_ipv4_literal(self):
+ url = "http://someuser:somepass@127.0.0.1:8080/test/path?query=value"
+ cleaned_url = remove_url_credentials(url)
+ self.assertEqual(cleaned_url, "http://127.0.0.1:8080/test/path?query=value")
+
+ def test_remove_credentials_ipv6_literal(self):
+ url = "http://someuser:somepass@[::1]:8080/test/path?query=value"
+ cleaned_url = remove_url_credentials(url)
+ self.assertEqual(cleaned_url, "http://[::1]:8080/test/path?query=value")
From eb8e45695e88510a611d2cc04f14cdf56036968a Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti
Date: Fri, 24 May 2024 22:13:37 +0200
Subject: [PATCH 09/24] elasticsearch: don't produce spans if native
elasticsearch support is enabled (#2524)
---
CHANGELOG.md | 3 ++
.../instrumentation/elasticsearch/__init__.py | 27 +++++++++++++-
.../test-requirements-2.txt | 6 ++--
.../tests/test_elasticsearch.py | 35 +++++++++++++++++--
tox.ini | 2 +-
5 files changed, 66 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3232e6fef8..a75e1537cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -54,10 +54,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#2474](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2474))
- `opentelemetry-instrumentation-elasticsearch` Improved support for version 8
([#2420](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2420))
+- `opentelemetry-instrumentation-elasticsearch` Disabling instrumentation with native OTel support enabled
+ ([#2524](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2524))
- `opentelemetry-instrumentation-asyncio` Check for __name__ attribute in the coroutine
([#2521](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2521))
- `opentelemetry-util-http` Preserve brackets around literal IPv6 hosts ([#2552](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2552))
+
## Version 1.24.0/0.45b0 (2024-03-28)
### Added
diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/__init__.py b/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/__init__.py
index acf4596fb0..f8d7920e20 100644
--- a/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/__init__.py
@@ -16,6 +16,15 @@
This library allows tracing HTTP elasticsearch made by the
`elasticsearch `_ library.
+.. warning::
+ The elasticsearch package got native OpenTelemetry support since version
+ `8.13 `_.
+ To avoid duplicated tracing this instrumentation disables itself if it finds an elasticsearch client
+ that has OpenTelemetry support enabled.
+
+ Please be aware that the two libraries may use a different semantic convention, see
+ `elasticsearch documentation `_.
+
Usage
-----
@@ -54,7 +63,7 @@ def response_hook(span: Span, response: dict)
for example:
-.. code: python
+.. code-block: python
from opentelemetry.instrumentation.elasticsearch import ElasticsearchInstrumentor
import elasticsearch
@@ -81,6 +90,7 @@ def response_hook(span, response):
"""
import re
+import warnings
from logging import getLogger
from os import environ
from typing import Collection
@@ -197,6 +207,16 @@ def _wrap_perform_request(
):
# pylint: disable=R0912,R0914
def wrapper(wrapped, _, args, kwargs):
+ # if wrapped elasticsearch has native OTel instrumentation just call the wrapped function
+ otel_span = kwargs.get("otel_span")
+ if otel_span and otel_span.otel_span:
+ warnings.warn(
+ "Instrumentation disabled, relying on elasticsearch native OTel support, see "
+ "https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/elasticsearch/elasticsearch.html",
+ Warning,
+ )
+ return wrapped(*args, **kwargs)
+
method = url = None
try:
method, url, *_ = args
@@ -249,6 +269,11 @@ def normalize_kwargs(k, v):
v = str(v)
elif isinstance(v, elastic_transport.HttpHeaders):
v = dict(v)
+ elif isinstance(
+ v, elastic_transport.OpenTelemetrySpan
+ ):
+ # the transport Span is always a dummy one
+ v = None
return (k, v)
hook_kwargs = dict(
diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt
index 23d87f93dd..6b0d677ec7 100644
--- a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt
+++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt
@@ -1,9 +1,9 @@
asgiref==3.7.2
attrs==23.2.0
Deprecated==1.2.14
-elasticsearch==8.12.1
-elasticsearch-dsl==8.12.0
-elastic-transport==8.12.0
+elasticsearch==8.13.1
+elasticsearch-dsl==8.13.1
+elastic-transport==8.13.0
importlib-metadata==6.11.0
iniconfig==2.0.0
packaging==23.2
diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/tests/test_elasticsearch.py b/instrumentation/opentelemetry-instrumentation-elasticsearch/tests/test_elasticsearch.py
index b0ee170329..b7e24d87c9 100644
--- a/instrumentation/opentelemetry-instrumentation-elasticsearch/tests/test_elasticsearch.py
+++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/tests/test_elasticsearch.py
@@ -23,6 +23,7 @@
import elasticsearch.exceptions
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
+from pytest import mark
import opentelemetry.instrumentation.elasticsearch
from opentelemetry import trace
@@ -36,7 +37,7 @@
from . import sanitization_queries # pylint: disable=no-name-in-module
-major_version = elasticsearch.VERSION[0]
+major_version, minor_version = elasticsearch.VERSION[:2]
if major_version == 8:
from . import helpers_es8 as helpers # pylint: disable=no-name-in-module
@@ -70,6 +71,9 @@ def get_elasticsearch_client(*args, **kwargs):
@mock.patch(helpers.perform_request_mock_path)
+@mock.patch.dict(
+ os.environ, {"OTEL_PYTHON_INSTRUMENTATION_ELASTICSEARCH_ENABLED": "false"}
+)
class TestElasticsearchIntegration(TestBase):
search_attributes = {
SpanAttributes.DB_SYSTEM: "elasticsearch",
@@ -110,7 +114,6 @@ def test_instrumentor(self, request_mock):
span = spans_list[0]
# Check version and name in span's instrumentation info
- # self.assertEqualSpanInstrumentationInfo(span, opentelemetry.instrumentation.elasticsearch)
self.assertEqualSpanInstrumentationInfo(
span, opentelemetry.instrumentation.elasticsearch
)
@@ -475,6 +478,7 @@ def request_hook(span, method, url, kwargs):
"headers": {
"accept": "application/vnd.elasticsearch+json; compatible-with=8"
},
+ "otel_span": None,
}
elif major_version == 7:
expected_kwargs = {
@@ -607,3 +611,30 @@ def test_bulk(self, request_mock):
self.assertEqualSpanInstrumentationInfo(
span, opentelemetry.instrumentation.elasticsearch
)
+
+ @mark.skipif(
+ (major_version, minor_version) < (8, 13),
+ reason="Native OTel since elasticsearch 8.13",
+ )
+ @mock.patch.dict(
+ os.environ,
+ {"OTEL_PYTHON_INSTRUMENTATION_ELASTICSEARCH_ENABLED": "true"},
+ )
+ def test_instrumentation_is_disabled_if_native_support_enabled(
+ self, request_mock
+ ):
+ request_mock.return_value = helpers.mock_response("{}")
+
+ es = get_elasticsearch_client(hosts=["http://localhost:9200"])
+ es.index(
+ index="sw",
+ id=1,
+ **normalize_arguments(body={"name": "adam"}, doc_type="_doc"),
+ )
+
+ spans_list = self.get_finished_spans()
+ self.assertEqual(len(spans_list), 1)
+ span = spans_list[0]
+
+ # Check that name in span's instrumentation info is not from this instrumentation
+ self.assertEqual(span.instrumentation_info.name, "elasticsearch-api")
diff --git a/tox.ini b/tox.ini
index d6fb9eee10..a014306640 100644
--- a/tox.ini
+++ b/tox.ini
@@ -92,7 +92,7 @@ envlist =
; below mean these dependencies are being used:
; 0: elasticsearch-dsl==6.4.0 elasticsearch==6.8.2
; 1: elasticsearch-dsl==7.4.1 elasticsearch==7.17.9
- ; 2: elasticsearch-dsl>=8.0,<8.13 elasticsearch>=8.0,<8.13
+ ; 2: elasticsearch-dsl==8.13.1 elasticsearch==8.13.1
py3{8,9,10,11}-test-instrumentation-elasticsearch-{0,1,2}
pypy3-test-instrumentation-elasticsearch-{0,1,2}
lint-instrumentation-elasticsearch
From 88111d0a8381bdc440c660b7e802dc951607392a Mon Sep 17 00:00:00 2001
From: Martin Stolle <121817095+stollero@users.noreply.github.com>
Date: Tue, 28 May 2024 20:34:28 +0200
Subject: [PATCH 10/24] fix(requests): Fix wrong time unit for duration
histogram (#2553)
---
CHANGELOG.md | 3 ++-
.../src/opentelemetry/instrumentation/requests/__init__.py | 4 +---
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a75e1537cc..7ba8e6d3e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -58,9 +58,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#2524](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2524))
- `opentelemetry-instrumentation-asyncio` Check for __name__ attribute in the coroutine
([#2521](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2521))
+- `opentelemetry-instrumentation-requests` Fix wrong time unit for duration histogram
+ ([#2553](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2553))
- `opentelemetry-util-http` Preserve brackets around literal IPv6 hosts ([#2552](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2552))
-
## Version 1.24.0/0.45b0 (2024-03-28)
### Added
diff --git a/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py b/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py
index 12797d6f5e..8c54482a46 100644
--- a/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py
@@ -229,9 +229,7 @@ def get_or_create_headers():
exception = exc
result = getattr(exc, "response", None)
finally:
- elapsed_time = max(
- round((default_timer() - start_time) * 1000), 0
- )
+ elapsed_time = max(default_timer() - start_time, 0)
if isinstance(result, Response):
span_attributes = {}
From 59a737c285f7e3b0e3901781d805f6ecdad41e45 Mon Sep 17 00:00:00 2001
From: Mike Goldsmith
Date: Tue, 28 May 2024 19:49:00 +0100
Subject: [PATCH 11/24] Add key predicate to baggage span processor (#2535)
* Add key predicate to baggage span processor
* add changelog entry
* fix linting
* more linter fixes
---------
Co-authored-by: Diego Hurtado
---
CHANGELOG.md | 2 +
.../README.rst | 29 +++++++
.../processor/baggage/__init__.py | 4 +-
.../processor/baggage/processor.py | 15 +++-
.../tests/test_baggage_processor.py | 86 ++++++++++++++++++-
5 files changed, 126 insertions(+), 10 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ba8e6d3e2..6876e2cf9e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -36,6 +36,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#2397](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2397)))
- `opentelemetry-processor-baggage` Initial release
([#2436](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2436))
+- `opentelemetry-processor-baggage` Add baggage key predicate
+ ([#2535](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2535))
### Fixed
diff --git a/processor/opentelemetry-processor-baggage/README.rst b/processor/opentelemetry-processor-baggage/README.rst
index 2768758a99..a111166cef 100644
--- a/processor/opentelemetry-processor-baggage/README.rst
+++ b/processor/opentelemetry-processor-baggage/README.rst
@@ -20,3 +20,32 @@ Do not put sensitive information in Baggage.
To repeat: a consequence of adding data to Baggage is that the keys and
values will appear in all outgoing HTTP headers from the application.
+
+## Usage
+
+Add the span processor when configuring the tracer provider.
+
+To configure the span processor to copy all baggage entries during configuration:
+
+```python
+from opentelemetry.processor.baggage import BaggageSpanProcessor, ALLOW_ALL_BAGGAGE_KEYS
+
+tracer_provider = TracerProvider()
+tracer_provider.add_span_processor(BaggageSpanProcessor(ALLOW_ALL_BAGGAGE_KEYS))
+```
+
+Alternatively, you can provide a custom baggage key predicate to select which baggage keys you want to copy.
+
+For example, to only copy baggage entries that start with `my-key`:
+
+```python
+starts_with_predicate = lambda baggage_key: baggage_key.startswith("my-key")
+tracer_provider.add_span_processor(BaggageSpanProcessor(starts_with_predicate))
+```
+
+For example, to only copy baggage entries that match the regex `^key.+`:
+
+```python
+regex_predicate = lambda baggage_key: baggage_key.startswith("^key.+")
+tracer_provider.add_span_processor(BaggageSpanProcessor(regex_predicate))
+```
\ No newline at end of file
diff --git a/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/__init__.py b/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/__init__.py
index a740c66491..fcff749d64 100644
--- a/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/__init__.py
+++ b/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/__init__.py
@@ -14,7 +14,7 @@
# pylint: disable=import-error
-from .processor import BaggageSpanProcessor
+from .processor import ALLOW_ALL_BAGGAGE_KEYS, BaggageSpanProcessor
from .version import __version__
-__all__ = ["BaggageSpanProcessor", "__version__"]
+__all__ = ["ALLOW_ALL_BAGGAGE_KEYS", "BaggageSpanProcessor", "__version__"]
diff --git a/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/processor.py b/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/processor.py
index 36df06a94c..d14cf3a7e6 100644
--- a/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/processor.py
+++ b/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/processor.py
@@ -12,13 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from typing import Optional
+from typing import Callable, Optional
from opentelemetry.baggage import get_all as get_all_baggage
from opentelemetry.context import Context
from opentelemetry.sdk.trace.export import SpanProcessor
from opentelemetry.trace import Span
+# A BaggageKeyPredicate is a function that takes a baggage key and returns a boolean
+BaggageKeyPredicateT = Callable[[str], bool]
+
+# A BaggageKeyPredicate that always returns True, allowing all baggage keys to be added to spans
+ALLOW_ALL_BAGGAGE_KEYS: BaggageKeyPredicateT = lambda _: True
+
class BaggageSpanProcessor(SpanProcessor):
"""
@@ -44,12 +50,13 @@ class BaggageSpanProcessor(SpanProcessor):
"""
- def __init__(self) -> None:
- pass
+ def __init__(self, baggage_key_predicate: BaggageKeyPredicateT) -> None:
+ self._baggage_key_predicate = baggage_key_predicate
def on_start(
self, span: "Span", parent_context: Optional[Context] = None
) -> None:
baggage = get_all_baggage(parent_context)
for key, value in baggage.items():
- span.set_attribute(key, value)
+ if self._baggage_key_predicate(key):
+ span.set_attribute(key, value)
diff --git a/processor/opentelemetry-processor-baggage/tests/test_baggage_processor.py b/processor/opentelemetry-processor-baggage/tests/test_baggage_processor.py
index 63a71c3cba..fb89ef5eb1 100644
--- a/processor/opentelemetry-processor-baggage/tests/test_baggage_processor.py
+++ b/processor/opentelemetry-processor-baggage/tests/test_baggage_processor.py
@@ -12,12 +12,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import re
import unittest
from opentelemetry.baggage import get_all as get_all_baggage
from opentelemetry.baggage import set_baggage
from opentelemetry.context import attach, detach
-from opentelemetry.processor.baggage import BaggageSpanProcessor
+from opentelemetry.processor.baggage import (
+ ALLOW_ALL_BAGGAGE_KEYS,
+ BaggageSpanProcessor,
+)
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SpanProcessor
from opentelemetry.trace import Span, Tracer
@@ -25,13 +29,77 @@
class BaggageSpanProcessorTest(unittest.TestCase):
def test_check_the_baggage(self):
- self.assertIsInstance(BaggageSpanProcessor(), SpanProcessor)
+ self.assertIsInstance(
+ BaggageSpanProcessor(ALLOW_ALL_BAGGAGE_KEYS), SpanProcessor
+ )
def test_set_baggage_attaches_to_child_spans_and_detaches_properly_with_context(
self,
):
tracer_provider = TracerProvider()
- tracer_provider.add_span_processor(BaggageSpanProcessor())
+ tracer_provider.add_span_processor(
+ BaggageSpanProcessor(ALLOW_ALL_BAGGAGE_KEYS)
+ )
+
+ # tracer has no baggage to start
+ tracer = tracer_provider.get_tracer("my-tracer")
+ self.assertIsInstance(tracer, Tracer)
+ self.assertEqual(get_all_baggage(), {})
+ # set baggage in context
+ ctx = set_baggage("queen", "bee")
+ with tracer.start_as_current_span(
+ name="bumble", context=ctx
+ ) as bumble_span:
+ # span should have baggage key-value pair in context
+ self.assertEqual(get_all_baggage(ctx), {"queen": "bee"})
+ # span should have baggage key-value pair in attribute
+ self.assertEqual(bumble_span._attributes["queen"], "bee")
+ with tracer.start_as_current_span(
+ name="child_span", context=ctx
+ ) as child_span:
+ self.assertIsInstance(child_span, Span)
+ # child span should have baggage key-value pair in context
+ self.assertEqual(get_all_baggage(ctx), {"queen": "bee"})
+ # child span should have baggage key-value pair in attribute
+ self.assertEqual(child_span._attributes["queen"], "bee")
+
+ def test_baggage_span_processor_with_string_prefix(
+ self,
+ ):
+ tracer_provider = TracerProvider()
+ tracer_provider.add_span_processor(
+ BaggageSpanProcessor(self.has_prefix)
+ )
+
+ # tracer has no baggage to start
+ tracer = tracer_provider.get_tracer("my-tracer")
+ self.assertIsInstance(tracer, Tracer)
+ self.assertEqual(get_all_baggage(), {})
+ # set baggage in context
+ ctx = set_baggage("queen", "bee")
+ with tracer.start_as_current_span(
+ name="bumble", context=ctx
+ ) as bumble_span:
+ # span should have baggage key-value pair in context
+ self.assertEqual(get_all_baggage(ctx), {"queen": "bee"})
+ # span should have baggage key-value pair in attribute
+ self.assertEqual(bumble_span._attributes["queen"], "bee")
+ with tracer.start_as_current_span(
+ name="child_span", context=ctx
+ ) as child_span:
+ self.assertIsInstance(child_span, Span)
+ # child span should have baggage key-value pair in context
+ self.assertEqual(get_all_baggage(ctx), {"queen": "bee"})
+ # child span should have baggage key-value pair in attribute
+ self.assertEqual(child_span._attributes["queen"], "bee")
+
+ def test_baggage_span_processor_with_regex(
+ self,
+ ):
+ tracer_provider = TracerProvider()
+ tracer_provider.add_span_processor(
+ BaggageSpanProcessor(self.matches_regex)
+ )
# tracer has no baggage to start
tracer = tracer_provider.get_tracer("my-tracer")
@@ -59,7 +127,9 @@ def test_set_baggage_attaches_to_child_spans_and_detaches_properly_with_token(
self,
):
tracer_provider = TracerProvider()
- tracer_provider.add_span_processor(BaggageSpanProcessor())
+ tracer_provider.add_span_processor(
+ BaggageSpanProcessor(ALLOW_ALL_BAGGAGE_KEYS)
+ )
# tracer has no baggage to start
tracer = tracer_provider.get_tracer("my-tracer")
@@ -87,3 +157,11 @@ def test_set_baggage_attaches_to_child_spans_and_detaches_properly_with_token(
detach(moar_token)
detach(honey_token)
self.assertEqual(get_all_baggage(), {})
+
+ @staticmethod
+ def has_prefix(baggage_key: str) -> bool:
+ return baggage_key.startswith("que")
+
+ @staticmethod
+ def matches_regex(baggage_key: str) -> bool:
+ return re.match(r"que.*", baggage_key) is not None
From ac97b004571474f22e06a46b0e056e48900b607e Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti
Date: Tue, 28 May 2024 23:31:44 +0200
Subject: [PATCH 12/24] Fix typos in test names (#2558)
---
.../tests/test_fastapi_instrumentation.py | 2 +-
.../tests/test_automatic.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py b/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py
index 4269dfa2e4..f9261ad5db 100644
--- a/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py
+++ b/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py
@@ -279,7 +279,7 @@ def test_basic_post_request_metric_success(self):
if isinstance(point, NumberDataPoint):
self.assertEqual(point.value, 0)
- def test_metric_uninstruemnt_app(self):
+ def test_metric_uninstrument_app(self):
self._client.get("/foobar")
self._instrumentor.uninstrument_app(self._app)
self._client.get("/foobar")
diff --git a/instrumentation/opentelemetry-instrumentation-pyramid/tests/test_automatic.py b/instrumentation/opentelemetry-instrumentation-pyramid/tests/test_automatic.py
index 4715e0b461..7b48e16e17 100644
--- a/instrumentation/opentelemetry-instrumentation-pyramid/tests/test_automatic.py
+++ b/instrumentation/opentelemetry-instrumentation-pyramid/tests/test_automatic.py
@@ -245,7 +245,7 @@ def test_basic_metric_success(self):
)
self.assertEqual(point.value, 0)
- def test_metric_uninstruemnt(self):
+ def test_metric_uninstrument(self):
self.client.get("/hello/756")
PyramidInstrumentor().uninstrument()
self.config = Configurator()
From f7cef147390fd39070630ac3730f3a6475a05e34 Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti
Date: Tue, 28 May 2024 23:56:38 +0200
Subject: [PATCH 13/24] distro: decouple default configuration test from
environment (#2561)
---
opentelemetry-distro/tests/test_distro.py | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/opentelemetry-distro/tests/test_distro.py b/opentelemetry-distro/tests/test_distro.py
index dd8f9c4cc4..ea7b9f08c8 100644
--- a/opentelemetry-distro/tests/test_distro.py
+++ b/opentelemetry-distro/tests/test_distro.py
@@ -14,7 +14,7 @@
# type: ignore
import os
-from unittest import TestCase
+from unittest import TestCase, mock
from pkg_resources import DistributionNotFound, require
@@ -33,17 +33,10 @@ def test_package_available(self):
except DistributionNotFound:
self.fail("opentelemetry-distro not installed")
+ @mock.patch.dict("os.environ", {}, clear=True)
def test_default_configuration(self):
distro = OpenTelemetryDistro()
- self.assertIsNone(os.environ.get(OTEL_TRACES_EXPORTER))
- self.assertIsNone(os.environ.get(OTEL_METRICS_EXPORTER))
distro.configure()
- self.assertEqual(
- "otlp", os.environ.get(OTEL_TRACES_EXPORTER)
- )
- self.assertEqual(
- "otlp", os.environ.get(OTEL_METRICS_EXPORTER)
- )
- self.assertEqual(
- "grpc", os.environ.get(OTEL_EXPORTER_OTLP_PROTOCOL)
- )
+ self.assertEqual("otlp", os.environ.get(OTEL_TRACES_EXPORTER))
+ self.assertEqual("otlp", os.environ.get(OTEL_METRICS_EXPORTER))
+ self.assertEqual("grpc", os.environ.get(OTEL_EXPORTER_OTLP_PROTOCOL))
From 25e429aaf98e0eb43ab907b61940cea9c2b86717 Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti
Date: Wed, 29 May 2024 01:18:09 +0200
Subject: [PATCH 14/24] instrumentation: revise BaseDistro.load_instrumentor
documentation (#2530)
---
.../src/opentelemetry/instrumentation/distro.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py
index cc1c99c1e0..93646bbb2f 100644
--- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py
+++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py
@@ -50,9 +50,10 @@ def configure(self, **kwargs):
def load_instrumentor( # pylint: disable=no-self-use
self, entry_point: EntryPoint, **kwargs
):
- """Takes a collection of instrumentation entry points
- and activates them by instantiating and calling instrument()
- on each one.
+ """Takes an instrumentation entry point and activates it by instantiating
+ and calling instrument() on it.
+ This is called for each opentelemetry_instrumentor entry point by auto
+ instrumentation.
Distros can override this method to customize the behavior by
inspecting each entry point and configuring them in special ways,
From bd9156fff84e4d30592d118aa8ee9e3d5d5499f9 Mon Sep 17 00:00:00 2001
From: Riccardo Magliocchetti
Date: Wed, 29 May 2024 17:56:27 +0200
Subject: [PATCH 15/24] Remove unrelated packages from test requirements
(#2559)
* botocore: remove random packages from test-requirements
Refs #1736
* boto: remove random packages from test requirements
Refs #1736
* tox: re-enable boto3sqs tests with pypy3
* threading: remove confluent-kafka from test requirements
---
.../test-requirements.txt | 34 ++-----------------
.../test-requirements.txt | 30 +---------------
.../test-requirements.txt | 1 -
tox.ini | 3 +-
4 files changed, 4 insertions(+), 64 deletions(-)
diff --git a/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt
index 92c356ebe1..4f8c5d2b67 100644
--- a/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt
+++ b/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt
@@ -1,69 +1,39 @@
-annotated-types==0.6.0
asgiref==3.7.2
attrs==23.2.0
-aws-sam-translator==1.85.0
-aws-xray-sdk==2.12.1
boto==2.49.0
boto3==1.34.44
botocore==1.34.44
certifi==2024.2.2
cffi==1.16.0
-cfn-lint==0.85.2
charset-normalizer==3.3.2
cryptography==42.0.3
Deprecated==1.2.14
docker==7.0.0
-ecdsa==0.18.0
-graphql-core==3.2.3
idna==3.6
importlib-metadata==6.11.0
-importlib-resources==6.1.1
iniconfig==2.0.0
-Jinja2==3.1.3
+Jinja2==3.1.4
jmespath==1.0.1
-jschema-to-python==1.2.3
-jsondiff==2.0.0
-jsonpatch==1.33
-jsonpickle==3.0.2
-jsonpointer==2.4
-jsonschema==4.21.1
-jsonschema-specifications==2023.12.1
-junit-xml==1.9
MarkupSafe==2.1.5
moto==2.3.2
-mpmath==1.3.0
-networkx==3.1
packaging==23.2
-pbr==6.0.0
-pkgutil_resolve_name==1.3.10
pluggy==1.4.0
py==1.11.0
py-cpuinfo==9.0.0
-pyasn1==0.5.1
pycparser==2.21
-pydantic==2.6.1
-pydantic_core==2.16.2
pytest==7.1.3
pytest-benchmark==4.0.0
python-dateutil==2.8.2
-python-jose==3.3.0
pytz==2024.1
PyYAML==6.0.1
-referencing==0.33.0
-regex==2023.12.25
requests==2.31.0
responses==0.25.0
-rpds-py==0.18.0
-rsa==4.9
s3transfer==0.10.0
-sarif-om==1.0.4
six==1.16.0
-sshpubkeys==3.3.1
-sympy==1.12
tomli==2.0.1
typing_extensions==4.9.0
urllib3==1.26.18
-Werkzeug==3.0.1
+Werkzeug==2.1.2
wrapt==1.16.0
xmltodict==0.13.0
zipp==3.17.0
diff --git a/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt
index 7c11b1e063..7229f0f721 100644
--- a/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt
+++ b/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt
@@ -1,63 +1,35 @@
-annotated-types==0.6.0
asgiref==3.7.2
attrs==23.2.0
-aws-sam-translator==1.85.0
aws-xray-sdk==2.12.1
boto3==1.28.80
botocore==1.31.80
certifi==2024.2.2
cffi==1.16.0
-cfn-lint==0.85.2
charset-normalizer==3.3.2
cryptography==42.0.5
Deprecated==1.2.14
docker==7.0.0
-ecdsa==0.18.0
idna==3.6
importlib-metadata==6.11.0
-importlib-resources==6.1.1
iniconfig==2.0.0
-Jinja2==3.1.3
+Jinja2==3.1.4
jmespath==1.0.1
-jschema-to-python==1.2.3
-jsondiff==2.0.0
-jsonpatch==1.33
-jsonpickle==3.0.3
-jsonpointer==2.4
-jsonschema==4.21.1
-jsonschema-specifications==2023.12.1
-junit-xml==1.9
MarkupSafe==2.0.1
moto==3.1.19
-mpmath==1.3.0
-networkx==3.1
packaging==23.2
-pbr==6.0.0
-pkgutil_resolve_name==1.3.10
pluggy==1.4.0
py==1.11.0
py-cpuinfo==9.0.0
-pyasn1==0.5.1
pycparser==2.21
-pydantic==2.6.2
-pydantic_core==2.16.3
pytest==7.1.3
pytest-benchmark==4.0.0
python-dateutil==2.8.2
-python-jose==3.3.0
pytz==2024.1
PyYAML==6.0.1
-referencing==0.33.0
-regex==2023.12.25
requests==2.31.0
responses==0.25.0
-rpds-py==0.18.0
-rsa==4.9
s3transfer==0.7.0
-sarif-om==1.0.4
six==1.16.0
-sshpubkeys==3.3.1
-sympy==1.12
tomli==2.0.1
typing_extensions==4.9.0
urllib3==1.26.18
diff --git a/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt
index ffda21f234..4f9b027918 100644
--- a/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt
+++ b/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt
@@ -1,6 +1,5 @@
asgiref==3.7.2
attrs==23.2.0
-confluent-kafka==2.3.0
Deprecated==1.2.14
importlib-metadata==6.11.0
iniconfig==2.0.0
diff --git a/tox.ini b/tox.ini
index a014306640..e97476a850 100644
--- a/tox.ini
+++ b/tox.ini
@@ -54,8 +54,7 @@ envlist =
; opentelemetry-instrumentation-boto3sqs
py3{8,9,10,11}-test-instrumentation-boto3sqs
- ; FIXME: see https://github.com/open-telemetry/opentelemetry-python-contrib/issues/1736
- ; pypy3-test-instrumentation-boto3sqs
+ pypy3-test-instrumentation-boto3sqs
lint-instrumentation-boto3sqs
; opentelemetry-instrumentation-django
From 7bddbb54195be4004275c83ef2592b362e443dc8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Em=C3=ADdio=20Neto?=
<9735060+emdneto@users.noreply.github.com>
Date: Wed, 29 May 2024 14:17:50 -0300
Subject: [PATCH 16/24] fix: remove dependency on sdk for system-metrics
instrumentation (#2557)
---
.../pyproject.toml | 1 -
.../opentelemetry/instrumentation/system_metrics/__init__.py | 5 ++---
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml b/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml
index fe60ca1251..aa2d8083ec 100644
--- a/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml
@@ -26,7 +26,6 @@ classifiers = [
dependencies = [
"opentelemetry-instrumentation == 0.46b0.dev",
"opentelemetry-api ~= 1.11",
- "opentelemetry-sdk ~= 1.11",
"psutil ~= 5.9",
]
diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py
index 74d4f6a431..6342d287d5 100644
--- a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py
@@ -91,7 +91,6 @@
from opentelemetry.instrumentation.system_metrics.package import _instruments
from opentelemetry.instrumentation.system_metrics.version import __version__
from opentelemetry.metrics import CallbackOptions, Observation, get_meter
-from opentelemetry.sdk.util import get_dict_as_key
_logger = logging.getLogger(__name__)
@@ -638,8 +637,8 @@ def _get_system_network_connections(
net_connection, metric
)
- connection_counters_key = get_dict_as_key(
- self._system_network_connections_labels
+ connection_counters_key = tuple(
+ sorted(self._system_network_connections_labels.items())
)
if connection_counters_key in connection_counters:
From 41792e7bb322455705088b18c3a4e1e530fe01c7 Mon Sep 17 00:00:00 2001
From: dferrochio
Date: Thu, 30 May 2024 18:27:35 -0300
Subject: [PATCH 17/24] Add confluent kafka producer poll and flush returns
(#2527)
---
CHANGELOG.md | 1 +
.../confluent_kafka/__init__.py | 4 +-
.../tests/test_instrumentation.py | 34 ++++++++++++-
.../tests/utils.py | 48 ++++++++++++++++++-
4 files changed, 82 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6876e2cf9e..c9cafd2dc1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Breaking changes
+- Add return statement to Confluent kafka Producer poll() and flush() calls when instrumented by ConfluentKafkaInstrumentor().instrument_producer() ([#2527](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2527))
- Rename `type` attribute to `asgi.event.type` in `opentelemetry-instrumentation-asgi`
([#2300](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2300))
- Rename AwsLambdaInstrumentor span attributes `faas.id` to `cloud.resource_id`, `faas.execution` to `faas.invocation_id`
diff --git a/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/__init__.py b/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/__init__.py
index c869d03dd9..30181d39c2 100644
--- a/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/__init__.py
@@ -151,10 +151,10 @@ def __init__(self, producer: Producer, tracer: Tracer):
self._tracer = tracer
def flush(self, timeout=-1):
- self._producer.flush(timeout)
+ return self._producer.flush(timeout)
def poll(self, timeout=-1):
- self._producer.poll(timeout)
+ return self._producer.poll(timeout)
def produce(
self, topic, value=None, *args, **kwargs
diff --git a/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/test_instrumentation.py b/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/test_instrumentation.py
index 21d5bd6f83..205de27733 100644
--- a/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/test_instrumentation.py
+++ b/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/test_instrumentation.py
@@ -31,7 +31,7 @@
)
from opentelemetry.test.test_base import TestBase
-from .utils import MockConsumer, MockedMessage
+from .utils import MockConsumer, MockedMessage, MockedProducer
class TestConfluentKafka(TestBase):
@@ -246,3 +246,35 @@ def _compare_spans(self, spans, expected_spans):
self.assertEqual(
expected_attribute_value, span.attributes[attribute_key]
)
+
+ def test_producer_poll(self) -> None:
+ instrumentation = ConfluentKafkaInstrumentor()
+ message_queue = []
+
+ producer = MockedProducer(
+ message_queue,
+ {
+ "bootstrap.servers": "localhost:29092",
+ },
+ )
+
+ producer = instrumentation.instrument_producer(producer)
+ producer.produce(topic="topic-1", key="key-1", value="value-1")
+ msg = producer.poll()
+ self.assertIsNotNone(msg)
+
+ def test_producer_flush(self) -> None:
+ instrumentation = ConfluentKafkaInstrumentor()
+ message_queue = []
+
+ producer = MockedProducer(
+ message_queue,
+ {
+ "bootstrap.servers": "localhost:29092",
+ },
+ )
+
+ producer = instrumentation.instrument_producer(producer)
+ producer.produce(topic="topic-1", key="key-1", value="value-1")
+ msg = producer.flush()
+ self.assertIsNotNone(msg)
diff --git a/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/utils.py b/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/utils.py
index 798daaeff4..92e11798f6 100644
--- a/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/utils.py
+++ b/instrumentation/opentelemetry-instrumentation-confluent-kafka/tests/utils.py
@@ -1,4 +1,6 @@
-from confluent_kafka import Consumer
+from typing import Optional
+
+from confluent_kafka import Consumer, Producer
class MockConsumer(Consumer):
@@ -20,11 +22,21 @@ def poll(self, timeout=None):
class MockedMessage:
- def __init__(self, topic: str, partition: int, offset: int, headers):
+ def __init__(
+ self,
+ topic: str,
+ partition: int,
+ offset: int,
+ headers,
+ key: Optional[str] = None,
+ value: Optional[str] = None,
+ ):
self._topic = topic
self._partition = partition
self._offset = offset
self._headers = headers
+ self._key = key
+ self._value = value
def topic(self):
return self._topic
@@ -37,3 +49,35 @@ def offset(self):
def headers(self):
return self._headers
+
+ def key(self):
+ return self._key
+
+ def value(self):
+ return self._value
+
+
+class MockedProducer(Producer):
+ def __init__(self, queue, config):
+ self._queue = queue
+ super().__init__(config)
+
+ def produce(
+ self, *args, **kwargs
+ ): # pylint: disable=keyword-arg-before-vararg
+ self._queue.append(
+ MockedMessage(
+ topic=kwargs.get("topic"),
+ partition=0,
+ offset=0,
+ headers=[],
+ key=kwargs.get("key"),
+ value=kwargs.get("value"),
+ )
+ )
+
+ def poll(self, *args, **kwargs):
+ return len(self._queue)
+
+ def flush(self, *args, **kwargs):
+ return len(self._queue)
From 728976fb10e595a445e0a87be26717d5c069c9a8 Mon Sep 17 00:00:00 2001
From: Alexander Shadchin
Date: Fri, 31 May 2024 00:50:53 +0300
Subject: [PATCH 18/24] Fix net peer attribute for unix socket connection
(#2493)
---
CHANGELOG.md | 1 +
.../instrumentation/redis/util.py | 12 +--
.../tests/test_redis.py | 85 +++++++++++++++++++
3 files changed, 92 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c9cafd2dc1..17152f3fa7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -64,6 +64,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `opentelemetry-instrumentation-requests` Fix wrong time unit for duration histogram
([#2553](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2553))
- `opentelemetry-util-http` Preserve brackets around literal IPv6 hosts ([#2552](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2552))
+- `opentelemetry-util-redis` Fix net peer attribute for unix socket connection ([#2493](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2493))
## Version 1.24.0/0.45b0 (2024-03-28)
diff --git a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py
index 2a24ead79a..4703bc271f 100644
--- a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py
+++ b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py
@@ -29,7 +29,12 @@ def _extract_conn_attributes(conn_kwargs):
}
db = conn_kwargs.get("db", 0)
attributes[SpanAttributes.DB_REDIS_DATABASE_INDEX] = db
- try:
+ if "path" in conn_kwargs:
+ attributes[SpanAttributes.NET_PEER_NAME] = conn_kwargs.get("path", "")
+ attributes[SpanAttributes.NET_TRANSPORT] = (
+ NetTransportValues.OTHER.value
+ )
+ else:
attributes[SpanAttributes.NET_PEER_NAME] = conn_kwargs.get(
"host", "localhost"
)
@@ -39,11 +44,6 @@ def _extract_conn_attributes(conn_kwargs):
attributes[SpanAttributes.NET_TRANSPORT] = (
NetTransportValues.IP_TCP.value
)
- except KeyError:
- attributes[SpanAttributes.NET_PEER_NAME] = conn_kwargs.get("path", "")
- attributes[SpanAttributes.NET_TRANSPORT] = (
- NetTransportValues.OTHER.value
- )
return attributes
diff --git a/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py b/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py
index 2d2670fee3..4a2fce5026 100644
--- a/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py
+++ b/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py
@@ -20,6 +20,11 @@
from opentelemetry import trace
from opentelemetry.instrumentation.redis import RedisInstrumentor
+from opentelemetry.semconv.trace import (
+ DbSystemValues,
+ NetTransportValues,
+ SpanAttributes,
+)
from opentelemetry.test.test_base import TestBase
from opentelemetry.trace import SpanKind
@@ -226,3 +231,83 @@ def test_no_op_tracer_provider(self):
spans = self.memory_exporter.get_finished_spans()
self.assertEqual(len(spans), 0)
+
+ def test_attributes_default(self):
+ redis_client = redis.Redis()
+
+ with mock.patch.object(redis_client, "connection"):
+ redis_client.set("key", "value")
+
+ spans = self.memory_exporter.get_finished_spans()
+ self.assertEqual(len(spans), 1)
+
+ span = spans[0]
+ self.assertEqual(
+ span.attributes[SpanAttributes.DB_SYSTEM],
+ DbSystemValues.REDIS.value,
+ )
+ self.assertEqual(
+ span.attributes[SpanAttributes.DB_REDIS_DATABASE_INDEX], 0
+ )
+ self.assertEqual(
+ span.attributes[SpanAttributes.NET_PEER_NAME], "localhost"
+ )
+ self.assertEqual(span.attributes[SpanAttributes.NET_PEER_PORT], 6379)
+ self.assertEqual(
+ span.attributes[SpanAttributes.NET_TRANSPORT],
+ NetTransportValues.IP_TCP.value,
+ )
+
+ def test_attributes_tcp(self):
+ redis_client = redis.Redis.from_url("redis://foo:bar@1.1.1.1:6380/1")
+
+ with mock.patch.object(redis_client, "connection"):
+ redis_client.set("key", "value")
+
+ spans = self.memory_exporter.get_finished_spans()
+ self.assertEqual(len(spans), 1)
+
+ span = spans[0]
+ self.assertEqual(
+ span.attributes[SpanAttributes.DB_SYSTEM],
+ DbSystemValues.REDIS.value,
+ )
+ self.assertEqual(
+ span.attributes[SpanAttributes.DB_REDIS_DATABASE_INDEX], 1
+ )
+ self.assertEqual(
+ span.attributes[SpanAttributes.NET_PEER_NAME], "1.1.1.1"
+ )
+ self.assertEqual(span.attributes[SpanAttributes.NET_PEER_PORT], 6380)
+ self.assertEqual(
+ span.attributes[SpanAttributes.NET_TRANSPORT],
+ NetTransportValues.IP_TCP.value,
+ )
+
+ def test_attributes_unix_socket(self):
+ redis_client = redis.Redis.from_url(
+ "unix://foo@/path/to/socket.sock?db=3&password=bar"
+ )
+
+ with mock.patch.object(redis_client, "connection"):
+ redis_client.set("key", "value")
+
+ spans = self.memory_exporter.get_finished_spans()
+ self.assertEqual(len(spans), 1)
+
+ span = spans[0]
+ self.assertEqual(
+ span.attributes[SpanAttributes.DB_SYSTEM],
+ DbSystemValues.REDIS.value,
+ )
+ self.assertEqual(
+ span.attributes[SpanAttributes.DB_REDIS_DATABASE_INDEX], 3
+ )
+ self.assertEqual(
+ span.attributes[SpanAttributes.NET_PEER_NAME],
+ "/path/to/socket.sock",
+ )
+ self.assertEqual(
+ span.attributes[SpanAttributes.NET_TRANSPORT],
+ NetTransportValues.OTHER.value,
+ )
From dc711e870ec086c1e598c9f9b6191b8a7eeba42e Mon Sep 17 00:00:00 2001
From: Rytis Bagdziunas
Date: Fri, 31 May 2024 00:48:22 +0200
Subject: [PATCH 19/24] Ensure httpx non-client methods are instrumented
(#2538)
* Ensure httpx non-client methods are instrumented
* Update changelog
* Added subTest to distinguish tests inside a loop
* Updated changelog
* Add a comment explaining private attribute usage
---------
Co-authored-by: Diego Hurtado
---
CHANGELOG.md | 5 +++-
.../instrumentation/httpx/__init__.py | 6 +++--
.../tests/test_httpx_integration.py | 24 +++++++++++++++++++
3 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 17152f3fa7..72ff7ac52c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -42,7 +42,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
-- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version (#2500)[https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500]
+- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version
+ ([#2500](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500))
+- `opentelemetry-instrumentation-httpx` Ensure httpx.get or httpx.request like methods are instrumented
+ ([#2538](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2538))
- `opentelemetry-instrumentation-grpc` AioClientInterceptor should propagate with a Metadata object
([#2363](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2363))
- `opentelemetry-instrumentation-boto3sqs` Instrument Session and resource
diff --git a/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/__init__.py b/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/__init__.py
index 7fcc7128be..850e76eea3 100644
--- a/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/__init__.py
@@ -564,11 +564,13 @@ def _instrument(self, **kwargs):
tracer_provider = kwargs.get("tracer_provider")
_InstrumentedClient._tracer_provider = tracer_provider
_InstrumentedAsyncClient._tracer_provider = tracer_provider
- httpx.Client = _InstrumentedClient
+ # Intentionally using a private attribute here, see:
+ # https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2538#discussion_r1610603719
+ httpx.Client = httpx._api.Client = _InstrumentedClient
httpx.AsyncClient = _InstrumentedAsyncClient
def _uninstrument(self, **kwargs):
- httpx.Client = self._original_client
+ httpx.Client = httpx._api.Client = self._original_client
httpx.AsyncClient = self._original_async_client
_InstrumentedClient._tracer_provider = None
_InstrumentedClient._request_hook = None
diff --git a/instrumentation/opentelemetry-instrumentation-httpx/tests/test_httpx_integration.py b/instrumentation/opentelemetry-instrumentation-httpx/tests/test_httpx_integration.py
index c3f668cafe..d64db1a8f5 100644
--- a/instrumentation/opentelemetry-instrumentation-httpx/tests/test_httpx_integration.py
+++ b/instrumentation/opentelemetry-instrumentation-httpx/tests/test_httpx_integration.py
@@ -532,12 +532,36 @@ def test_instrument_client(self):
self.assertEqual(result.text, "Hello!")
self.assert_span(num_spans=1)
+ def test_instrumentation_without_client(self):
+
+ HTTPXClientInstrumentor().instrument()
+ results = [
+ httpx.get(self.URL),
+ httpx.request("GET", self.URL),
+ ]
+ with httpx.stream("GET", self.URL) as stream:
+ stream.read()
+ results.append(stream)
+
+ spans = self.assert_span(num_spans=len(results))
+ for idx, res in enumerate(results):
+ with self.subTest(idx=idx, res=res):
+ self.assertEqual(res.text, "Hello!")
+ self.assertEqual(
+ spans[idx].attributes[SpanAttributes.HTTP_URL],
+ self.URL,
+ )
+
+ HTTPXClientInstrumentor().uninstrument()
+
def test_uninstrument(self):
HTTPXClientInstrumentor().instrument()
HTTPXClientInstrumentor().uninstrument()
client = self.create_client()
result = self.perform_request(self.URL, client=client)
+ result_no_client = httpx.get(self.URL)
self.assertEqual(result.text, "Hello!")
+ self.assertEqual(result_no_client.text, "Hello!")
self.assert_span(num_spans=0)
def test_uninstrument_client(self):
From 0db9dbe3113d61c037d773b8f55fc75f4a846992 Mon Sep 17 00:00:00 2001
From: OpenTelemetry Bot <107717825+opentelemetrybot@users.noreply.github.com>
Date: Fri, 31 May 2024 03:48:51 +0200
Subject: [PATCH 20/24] Update version to 1.26.0.dev/0.47b0.dev (#2568)
---
.github/workflows/instrumentations_0.yml | 2 +-
.github/workflows/instrumentations_1.yml | 2 +-
.github/workflows/lint.yml | 2 +-
.github/workflows/test.yml | 2 +-
CHANGELOG.md | 13 ++-
_template/version.py | 2 +-
eachdist.ini | 4 +-
.../prometheus_remote_write/version.py | 2 +-
.../pyproject.toml | 2 +-
.../exporter/richconsole/version.py | 2 +-
.../pyproject.toml | 2 +-
.../instrumentation/aio_pika/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/aiohttp_client/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/aiohttp_server/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/aiopg/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/asgi/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/asyncio/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/asyncpg/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/aws_lambda/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/boto/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/boto3sqs/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/botocore/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/cassandra/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/celery/version.py | 2 +-
.../pyproject.toml | 2 +-
.../confluent_kafka/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/dbapi/version.py | 2 +-
.../pyproject.toml | 10 +-
.../instrumentation/django/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/elasticsearch/version.py | 2 +-
.../pyproject.toml | 8 +-
.../instrumentation/falcon/version.py | 2 +-
.../pyproject.toml | 8 +-
.../instrumentation/fastapi/version.py | 2 +-
.../pyproject.toml | 8 +-
.../instrumentation/flask/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/grpc/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/httpx/version.py | 2 +-
.../pyproject.toml | 2 +-
.../instrumentation/jinja2/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/kafka/version.py | 2 +-
.../pyproject.toml | 2 +-
.../instrumentation/logging/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/mysql/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/mysqlclient/version.py | 2 +-
.../pyproject.toml | 2 +-
.../instrumentation/pika/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/psycopg/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/psycopg2/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/pymemcache/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/pymongo/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/pymysql/version.py | 2 +-
.../pyproject.toml | 8 +-
.../instrumentation/pyramid/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/redis/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/remoulade/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/requests/version.py | 2 +-
.../pyproject.toml | 2 +-
.../instrumentation/sklearn/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/sqlalchemy/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/sqlite3/version.py | 2 +-
.../pyproject.toml | 8 +-
.../instrumentation/starlette/version.py | 2 +-
.../pyproject.toml | 2 +-
.../instrumentation/system_metrics/version.py | 2 +-
.../pyproject.toml | 2 +-
.../instrumentation/threading/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/tornado/version.py | 2 +-
.../pyproject.toml | 4 +-
.../instrumentation/tortoiseorm/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/urllib/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/urllib3/version.py | 2 +-
.../pyproject.toml | 6 +-
.../instrumentation/wsgi/version.py | 2 +-
.../pyproject.toml | 96 ++++++++---------
.../contrib-instrumentations/version.py | 2 +-
opentelemetry-distro/pyproject.toml | 4 +-
.../src/opentelemetry/distro/version.py | 2 +-
.../instrumentation/bootstrap_gen.py | 100 +++++++++---------
.../opentelemetry/instrumentation/version.py | 2 +-
.../processor/baggage/version.py | 2 +-
.../propagators/ot_trace/version.py | 2 +-
.../resource/detector/container/version.py | 2 +-
.../src/opentelemetry/util/http/version.py | 2 +-
116 files changed, 285 insertions(+), 280 deletions(-)
diff --git a/.github/workflows/instrumentations_0.yml b/.github/workflows/instrumentations_0.yml
index a138621633..5fb21ad672 100644
--- a/.github/workflows/instrumentations_0.yml
+++ b/.github/workflows/instrumentations_0.yml
@@ -6,7 +6,7 @@ on:
- 'release/*'
pull_request:
env:
- CORE_REPO_SHA: 955c92e91b5cd4bcfb43c39efcef086b040471d2
+ CORE_REPO_SHA: 141a6a2e473ef7f0ec4915dfb71e3c0fa595283e
jobs:
instrumentations-0:
diff --git a/.github/workflows/instrumentations_1.yml b/.github/workflows/instrumentations_1.yml
index 904f2ee999..2bab23d7d2 100644
--- a/.github/workflows/instrumentations_1.yml
+++ b/.github/workflows/instrumentations_1.yml
@@ -6,7 +6,7 @@ on:
- 'release/*'
pull_request:
env:
- CORE_REPO_SHA: 955c92e91b5cd4bcfb43c39efcef086b040471d2
+ CORE_REPO_SHA: 141a6a2e473ef7f0ec4915dfb71e3c0fa595283e
jobs:
instrumentations-1:
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 39afb3ee96..859b567824 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -6,7 +6,7 @@ on:
- 'release/*'
pull_request:
env:
- CORE_REPO_SHA: 955c92e91b5cd4bcfb43c39efcef086b040471d2
+ CORE_REPO_SHA: 141a6a2e473ef7f0ec4915dfb71e3c0fa595283e
jobs:
lint-3_11:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index a129c6e7ce..ee66efac64 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -6,7 +6,7 @@ on:
- 'release/*'
pull_request:
env:
- CORE_REPO_SHA: 47d5ad7aae5aef31238ca66e55dc550b307c7b35
+ CORE_REPO_SHA: 141a6a2e473ef7f0ec4915dfb71e3c0fa595283e
jobs:
misc:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 72ff7ac52c..778f16c54b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Fixed
+
+- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version
+ ([#2500](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500))
+- `opentelemetry-instrumentation-httpx` Ensure httpx.get or httpx.request like methods are instrumented
+ ([#2538](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2538))
+
+## Version 1.25.0/0.46b0 (2024-05-30)
+
### Breaking changes
- Add return statement to Confluent kafka Producer poll() and flush() calls when instrumented by ConfluentKafkaInstrumentor().instrument_producer() ([#2527](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2527))
@@ -42,10 +51,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
-- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version
- ([#2500](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500))
-- `opentelemetry-instrumentation-httpx` Ensure httpx.get or httpx.request like methods are instrumented
- ([#2538](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2538))
- `opentelemetry-instrumentation-grpc` AioClientInterceptor should propagate with a Metadata object
([#2363](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2363))
- `opentelemetry-instrumentation-boto3sqs` Instrument Session and resource
diff --git a/_template/version.py b/_template/version.py
index ff4933b20b..b6955b0eca 100644
--- a/_template/version.py
+++ b/_template/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/eachdist.ini b/eachdist.ini
index 60f1154a83..7f170e4947 100644
--- a/eachdist.ini
+++ b/eachdist.ini
@@ -16,7 +16,7 @@ sortfirst=
ext/*
[stable]
-version=1.25.0.dev
+version=1.26.0.dev
packages=
opentelemetry-sdk
@@ -34,7 +34,7 @@ packages=
opentelemetry-api
[prerelease]
-version=0.46b0.dev
+version=0.47b0.dev
packages=
all
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py
index ff4933b20b..b6955b0eca 100644
--- a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/exporter/opentelemetry-exporter-richconsole/pyproject.toml b/exporter/opentelemetry-exporter-richconsole/pyproject.toml
index 9fb32c772c..aa672ac84d 100644
--- a/exporter/opentelemetry-exporter-richconsole/pyproject.toml
+++ b/exporter/opentelemetry-exporter-richconsole/pyproject.toml
@@ -26,7 +26,7 @@ classifiers = [
dependencies = [
"opentelemetry-api ~= 1.12",
"opentelemetry-sdk ~= 1.12",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"rich>=10.0.0",
]
diff --git a/exporter/opentelemetry-exporter-richconsole/src/opentelemetry/exporter/richconsole/version.py b/exporter/opentelemetry-exporter-richconsole/src/opentelemetry/exporter/richconsole/version.py
index ff4933b20b..b6955b0eca 100644
--- a/exporter/opentelemetry-exporter-richconsole/src/opentelemetry/exporter/richconsole/version.py
+++ b/exporter/opentelemetry-exporter-richconsole/src/opentelemetry/exporter/richconsole/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-aio-pika/pyproject.toml b/instrumentation/opentelemetry-instrumentation-aio-pika/pyproject.toml
index 73c10fffce..71956d28ce 100644
--- a/instrumentation/opentelemetry-instrumentation-aio-pika/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-aio-pika/pyproject.toml
@@ -25,7 +25,7 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.5",
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-aio-pika/src/opentelemetry/instrumentation/aio_pika/version.py b/instrumentation/opentelemetry-instrumentation-aio-pika/src/opentelemetry/instrumentation/aio_pika/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-aio-pika/src/opentelemetry/instrumentation/aio_pika/version.py
+++ b/instrumentation/opentelemetry-instrumentation-aio-pika/src/opentelemetry/instrumentation/aio_pika/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-client/pyproject.toml b/instrumentation/opentelemetry-instrumentation-aiohttp-client/pyproject.toml
index 17b92b2cf8..4eb0b25b17 100644
--- a/instrumentation/opentelemetry-instrumentation-aiohttp-client/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-aiohttp-client/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py b/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py
index 604195c10e..deef26c62f 100644
--- a/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py
+++ b/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-server/pyproject.toml b/instrumentation/opentelemetry-instrumentation-aiohttp-server/pyproject.toml
index f85cfd6e39..a335800216 100644
--- a/instrumentation/opentelemetry-instrumentation-aiohttp-server/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-aiohttp-server/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-server/src/opentelemetry/instrumentation/aiohttp_server/version.py b/instrumentation/opentelemetry-instrumentation-aiohttp-server/src/opentelemetry/instrumentation/aiohttp_server/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-aiohttp-server/src/opentelemetry/instrumentation/aiohttp_server/version.py
+++ b/instrumentation/opentelemetry-instrumentation-aiohttp-server/src/opentelemetry/instrumentation/aiohttp_server/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-aiopg/pyproject.toml b/instrumentation/opentelemetry-instrumentation-aiopg/pyproject.toml
index 4a01639d37..17d4513dc9 100644
--- a/instrumentation/opentelemetry-instrumentation-aiopg/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-aiopg/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-dbapi == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-aiopg/src/opentelemetry/instrumentation/aiopg/version.py b/instrumentation/opentelemetry-instrumentation-aiopg/src/opentelemetry/instrumentation/aiopg/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-aiopg/src/opentelemetry/instrumentation/aiopg/version.py
+++ b/instrumentation/opentelemetry-instrumentation-aiopg/src/opentelemetry/instrumentation/aiopg/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-asgi/pyproject.toml b/instrumentation/opentelemetry-instrumentation-asgi/pyproject.toml
index a4072bac7d..3e7fc8b9c9 100644
--- a/instrumentation/opentelemetry-instrumentation-asgi/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-asgi/pyproject.toml
@@ -26,9 +26,9 @@ classifiers = [
dependencies = [
"asgiref ~= 3.0",
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/version.py b/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/version.py
+++ b/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/pyproject.toml b/instrumentation/opentelemetry-instrumentation-asyncio/pyproject.toml
index 540da184be..b6b272a57a 100644
--- a/instrumentation/opentelemetry-instrumentation-asyncio/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-asyncio/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.14",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-test-utils == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-test-utils == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/version.py b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/version.py
+++ b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-asyncpg/pyproject.toml b/instrumentation/opentelemetry-instrumentation-asyncpg/pyproject.toml
index 6cdd2e7294..9f4f9edd8a 100644
--- a/instrumentation/opentelemetry-instrumentation-asyncpg/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-asyncpg/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/version.py b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/version.py
+++ b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-aws-lambda/pyproject.toml b/instrumentation/opentelemetry-instrumentation-aws-lambda/pyproject.toml
index 3088c47dbe..8e559db99b 100644
--- a/instrumentation/opentelemetry-instrumentation-aws-lambda/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-aws-lambda/pyproject.toml
@@ -21,9 +21,9 @@ classifiers = [
"Programming Language :: Python :: 3.8",
]
dependencies = [
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"opentelemetry-propagator-aws-xray == 1.0.1",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-aws-lambda/src/opentelemetry/instrumentation/aws_lambda/version.py b/instrumentation/opentelemetry-instrumentation-aws-lambda/src/opentelemetry/instrumentation/aws_lambda/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-aws-lambda/src/opentelemetry/instrumentation/aws_lambda/version.py
+++ b/instrumentation/opentelemetry-instrumentation-aws-lambda/src/opentelemetry/instrumentation/aws_lambda/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-boto/pyproject.toml b/instrumentation/opentelemetry-instrumentation-boto/pyproject.toml
index 87a323f996..8ddd1f3884 100644
--- a/instrumentation/opentelemetry-instrumentation-boto/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-boto/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-boto/src/opentelemetry/instrumentation/boto/version.py b/instrumentation/opentelemetry-instrumentation-boto/src/opentelemetry/instrumentation/boto/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-boto/src/opentelemetry/instrumentation/boto/version.py
+++ b/instrumentation/opentelemetry-instrumentation-boto/src/opentelemetry/instrumentation/boto/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-boto3sqs/pyproject.toml b/instrumentation/opentelemetry-instrumentation-boto3sqs/pyproject.toml
index 2da67c9848..295204abb8 100644
--- a/instrumentation/opentelemetry-instrumentation-boto3sqs/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-boto3sqs/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-boto3sqs/src/opentelemetry/instrumentation/boto3sqs/version.py b/instrumentation/opentelemetry-instrumentation-boto3sqs/src/opentelemetry/instrumentation/boto3sqs/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-boto3sqs/src/opentelemetry/instrumentation/boto3sqs/version.py
+++ b/instrumentation/opentelemetry-instrumentation-boto3sqs/src/opentelemetry/instrumentation/boto3sqs/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-botocore/pyproject.toml b/instrumentation/opentelemetry-instrumentation-botocore/pyproject.toml
index 7b0b34d255..7749163b51 100644
--- a/instrumentation/opentelemetry-instrumentation-botocore/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-botocore/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"opentelemetry-propagator-aws-xray == 1.0.1",
]
diff --git a/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/version.py b/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/version.py
+++ b/instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-cassandra/pyproject.toml b/instrumentation/opentelemetry-instrumentation-cassandra/pyproject.toml
index 85f187922e..7c55c88b8f 100644
--- a/instrumentation/opentelemetry-instrumentation-cassandra/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-cassandra/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-cassandra/src/opentelemetry/instrumentation/cassandra/version.py b/instrumentation/opentelemetry-instrumentation-cassandra/src/opentelemetry/instrumentation/cassandra/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-cassandra/src/opentelemetry/instrumentation/cassandra/version.py
+++ b/instrumentation/opentelemetry-instrumentation-cassandra/src/opentelemetry/instrumentation/cassandra/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-celery/pyproject.toml b/instrumentation/opentelemetry-instrumentation-celery/pyproject.toml
index 7b0027425f..e4b734c0f7 100644
--- a/instrumentation/opentelemetry-instrumentation-celery/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-celery/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-celery/src/opentelemetry/instrumentation/celery/version.py b/instrumentation/opentelemetry-instrumentation-celery/src/opentelemetry/instrumentation/celery/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-celery/src/opentelemetry/instrumentation/celery/version.py
+++ b/instrumentation/opentelemetry-instrumentation-celery/src/opentelemetry/instrumentation/celery/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-confluent-kafka/pyproject.toml b/instrumentation/opentelemetry-instrumentation-confluent-kafka/pyproject.toml
index 9baeaeb40e..13e7ca94cd 100644
--- a/instrumentation/opentelemetry-instrumentation-confluent-kafka/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-confluent-kafka/pyproject.toml
@@ -21,7 +21,7 @@ classifiers = [
"Programming Language :: Python :: 3.8",
]
dependencies = [
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"opentelemetry-api ~= 1.12",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/version.py b/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/version.py
+++ b/instrumentation/opentelemetry-instrumentation-confluent-kafka/src/opentelemetry/instrumentation/confluent_kafka/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-dbapi/pyproject.toml b/instrumentation/opentelemetry-instrumentation-dbapi/pyproject.toml
index e726768535..cf8b2d5dd2 100644
--- a/instrumentation/opentelemetry-instrumentation-dbapi/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-dbapi/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/version.py b/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/version.py
index 17627b21dc..db4e3a0022 100644
--- a/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/version.py
+++ b/instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/version.py
@@ -12,6 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
_instruments = tuple()
diff --git a/instrumentation/opentelemetry-instrumentation-django/pyproject.toml b/instrumentation/opentelemetry-instrumentation-django/pyproject.toml
index c8869d7b29..74a9b10a59 100644
--- a/instrumentation/opentelemetry-instrumentation-django/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-django/pyproject.toml
@@ -25,15 +25,15 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-wsgi == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-wsgi == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
asgi = [
- "opentelemetry-instrumentation-asgi == 0.46b0.dev",
+ "opentelemetry-instrumentation-asgi == 0.47b0.dev",
]
instruments = [
"django >= 1.10",
diff --git a/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/version.py b/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/version.py
+++ b/instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/pyproject.toml b/instrumentation/opentelemetry-instrumentation-elasticsearch/pyproject.toml
index f5ba221b7f..b16f79f2ca 100644
--- a/instrumentation/opentelemetry-instrumentation-elasticsearch/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/version.py b/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/version.py
+++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/src/opentelemetry/instrumentation/elasticsearch/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-falcon/pyproject.toml b/instrumentation/opentelemetry-instrumentation-falcon/pyproject.toml
index 93787a010d..14e92041fa 100644
--- a/instrumentation/opentelemetry-instrumentation-falcon/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-falcon/pyproject.toml
@@ -25,10 +25,10 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-wsgi == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-wsgi == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
"packaging >= 20.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-falcon/src/opentelemetry/instrumentation/falcon/version.py b/instrumentation/opentelemetry-instrumentation-falcon/src/opentelemetry/instrumentation/falcon/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-falcon/src/opentelemetry/instrumentation/falcon/version.py
+++ b/instrumentation/opentelemetry-instrumentation-falcon/src/opentelemetry/instrumentation/falcon/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-fastapi/pyproject.toml b/instrumentation/opentelemetry-instrumentation-fastapi/pyproject.toml
index 0e11179de2..c8cff0d46d 100644
--- a/instrumentation/opentelemetry-instrumentation-fastapi/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-fastapi/pyproject.toml
@@ -25,10 +25,10 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-asgi == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-asgi == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/version.py b/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/version.py
+++ b/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml b/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml
index 2bc1335a51..f0abd0dc04 100644
--- a/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml
@@ -25,10 +25,10 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-wsgi == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-wsgi == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
"packaging >= 21.0",
"importlib-metadata >= 4.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/version.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/version.py
+++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-grpc/pyproject.toml b/instrumentation/opentelemetry-instrumentation-grpc/pyproject.toml
index 7deffb71e7..6acda1ff8b 100644
--- a/instrumentation/opentelemetry-instrumentation-grpc/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-grpc/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/version.py b/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/version.py
+++ b/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-httpx/pyproject.toml b/instrumentation/opentelemetry-instrumentation-httpx/pyproject.toml
index e4e5575d96..8e94e70de8 100644
--- a/instrumentation/opentelemetry-instrumentation-httpx/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-httpx/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/version.py b/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/version.py
+++ b/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-jinja2/pyproject.toml b/instrumentation/opentelemetry-instrumentation-jinja2/pyproject.toml
index 6284496ebd..a93fe78d7e 100644
--- a/instrumentation/opentelemetry-instrumentation-jinja2/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-jinja2/pyproject.toml
@@ -25,7 +25,7 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-jinja2/src/opentelemetry/instrumentation/jinja2/version.py b/instrumentation/opentelemetry-instrumentation-jinja2/src/opentelemetry/instrumentation/jinja2/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-jinja2/src/opentelemetry/instrumentation/jinja2/version.py
+++ b/instrumentation/opentelemetry-instrumentation-jinja2/src/opentelemetry/instrumentation/jinja2/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-kafka-python/pyproject.toml b/instrumentation/opentelemetry-instrumentation-kafka-python/pyproject.toml
index 580c076a82..bd06b90f06 100644
--- a/instrumentation/opentelemetry-instrumentation-kafka-python/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-kafka-python/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.5",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-kafka-python/src/opentelemetry/instrumentation/kafka/version.py b/instrumentation/opentelemetry-instrumentation-kafka-python/src/opentelemetry/instrumentation/kafka/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-kafka-python/src/opentelemetry/instrumentation/kafka/version.py
+++ b/instrumentation/opentelemetry-instrumentation-kafka-python/src/opentelemetry/instrumentation/kafka/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-logging/pyproject.toml b/instrumentation/opentelemetry-instrumentation-logging/pyproject.toml
index 57572ce634..df254c9d60 100644
--- a/instrumentation/opentelemetry-instrumentation-logging/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-logging/pyproject.toml
@@ -25,7 +25,7 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/version.py b/instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/version.py
index 17627b21dc..db4e3a0022 100644
--- a/instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/version.py
+++ b/instrumentation/opentelemetry-instrumentation-logging/src/opentelemetry/instrumentation/logging/version.py
@@ -12,6 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
_instruments = tuple()
diff --git a/instrumentation/opentelemetry-instrumentation-mysql/pyproject.toml b/instrumentation/opentelemetry-instrumentation-mysql/pyproject.toml
index 481748c007..1c66bb932c 100644
--- a/instrumentation/opentelemetry-instrumentation-mysql/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-mysql/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-dbapi == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-mysql/src/opentelemetry/instrumentation/mysql/version.py b/instrumentation/opentelemetry-instrumentation-mysql/src/opentelemetry/instrumentation/mysql/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-mysql/src/opentelemetry/instrumentation/mysql/version.py
+++ b/instrumentation/opentelemetry-instrumentation-mysql/src/opentelemetry/instrumentation/mysql/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-mysqlclient/pyproject.toml b/instrumentation/opentelemetry-instrumentation-mysqlclient/pyproject.toml
index c9db02e22f..bb4f62975a 100644
--- a/instrumentation/opentelemetry-instrumentation-mysqlclient/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-mysqlclient/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-dbapi == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-mysqlclient/src/opentelemetry/instrumentation/mysqlclient/version.py b/instrumentation/opentelemetry-instrumentation-mysqlclient/src/opentelemetry/instrumentation/mysqlclient/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-mysqlclient/src/opentelemetry/instrumentation/mysqlclient/version.py
+++ b/instrumentation/opentelemetry-instrumentation-mysqlclient/src/opentelemetry/instrumentation/mysqlclient/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-pika/pyproject.toml b/instrumentation/opentelemetry-instrumentation-pika/pyproject.toml
index a41b7297a8..011bee252c 100644
--- a/instrumentation/opentelemetry-instrumentation-pika/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-pika/pyproject.toml
@@ -24,7 +24,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
]
dependencies = [
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"opentelemetry-api ~= 1.5",
"packaging >= 20.0",
"wrapt >= 1.0.0, < 2.0.0",
diff --git a/instrumentation/opentelemetry-instrumentation-pika/src/opentelemetry/instrumentation/pika/version.py b/instrumentation/opentelemetry-instrumentation-pika/src/opentelemetry/instrumentation/pika/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-pika/src/opentelemetry/instrumentation/pika/version.py
+++ b/instrumentation/opentelemetry-instrumentation-pika/src/opentelemetry/instrumentation/pika/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-psycopg/pyproject.toml b/instrumentation/opentelemetry-instrumentation-psycopg/pyproject.toml
index d2328035fb..8790a02026 100644
--- a/instrumentation/opentelemetry-instrumentation-psycopg/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-psycopg/pyproject.toml
@@ -26,8 +26,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-dbapi == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-psycopg/src/opentelemetry/instrumentation/psycopg/version.py b/instrumentation/opentelemetry-instrumentation-psycopg/src/opentelemetry/instrumentation/psycopg/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-psycopg/src/opentelemetry/instrumentation/psycopg/version.py
+++ b/instrumentation/opentelemetry-instrumentation-psycopg/src/opentelemetry/instrumentation/psycopg/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-psycopg2/pyproject.toml b/instrumentation/opentelemetry-instrumentation-psycopg2/pyproject.toml
index 399d5dc466..ebc3ed592a 100644
--- a/instrumentation/opentelemetry-instrumentation-psycopg2/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-psycopg2/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-dbapi == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-psycopg2/src/opentelemetry/instrumentation/psycopg2/version.py b/instrumentation/opentelemetry-instrumentation-psycopg2/src/opentelemetry/instrumentation/psycopg2/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-psycopg2/src/opentelemetry/instrumentation/psycopg2/version.py
+++ b/instrumentation/opentelemetry-instrumentation-psycopg2/src/opentelemetry/instrumentation/psycopg2/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-pymemcache/pyproject.toml b/instrumentation/opentelemetry-instrumentation-pymemcache/pyproject.toml
index f7f3bc1905..46ce5870a7 100644
--- a/instrumentation/opentelemetry-instrumentation-pymemcache/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-pymemcache/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-pymemcache/src/opentelemetry/instrumentation/pymemcache/version.py b/instrumentation/opentelemetry-instrumentation-pymemcache/src/opentelemetry/instrumentation/pymemcache/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-pymemcache/src/opentelemetry/instrumentation/pymemcache/version.py
+++ b/instrumentation/opentelemetry-instrumentation-pymemcache/src/opentelemetry/instrumentation/pymemcache/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-pymongo/pyproject.toml b/instrumentation/opentelemetry-instrumentation-pymongo/pyproject.toml
index 7c1c8a03a5..bc921d0dd5 100644
--- a/instrumentation/opentelemetry-instrumentation-pymongo/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-pymongo/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/version.py b/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/version.py
+++ b/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-pymysql/pyproject.toml b/instrumentation/opentelemetry-instrumentation-pymysql/pyproject.toml
index 858fea62fa..39eb241054 100644
--- a/instrumentation/opentelemetry-instrumentation-pymysql/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-pymysql/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-dbapi == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-pymysql/src/opentelemetry/instrumentation/pymysql/version.py b/instrumentation/opentelemetry-instrumentation-pymysql/src/opentelemetry/instrumentation/pymysql/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-pymysql/src/opentelemetry/instrumentation/pymysql/version.py
+++ b/instrumentation/opentelemetry-instrumentation-pymysql/src/opentelemetry/instrumentation/pymysql/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-pyramid/pyproject.toml b/instrumentation/opentelemetry-instrumentation-pyramid/pyproject.toml
index 49a61287f6..221e74a602 100644
--- a/instrumentation/opentelemetry-instrumentation-pyramid/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-pyramid/pyproject.toml
@@ -25,10 +25,10 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-wsgi == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-wsgi == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-pyramid/src/opentelemetry/instrumentation/pyramid/version.py b/instrumentation/opentelemetry-instrumentation-pyramid/src/opentelemetry/instrumentation/pyramid/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-pyramid/src/opentelemetry/instrumentation/pyramid/version.py
+++ b/instrumentation/opentelemetry-instrumentation-pyramid/src/opentelemetry/instrumentation/pyramid/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-redis/pyproject.toml b/instrumentation/opentelemetry-instrumentation-redis/pyproject.toml
index 76b049b7c8..0139ba5fb8 100644
--- a/instrumentation/opentelemetry-instrumentation-redis/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-redis/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"wrapt >= 1.12.1",
]
diff --git a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/version.py b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/version.py
+++ b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-remoulade/pyproject.toml b/instrumentation/opentelemetry-instrumentation-remoulade/pyproject.toml
index ba23cc0b0a..5b4d838d56 100644
--- a/instrumentation/opentelemetry-instrumentation-remoulade/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-remoulade/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-remoulade/src/opentelemetry/instrumentation/remoulade/version.py b/instrumentation/opentelemetry-instrumentation-remoulade/src/opentelemetry/instrumentation/remoulade/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-remoulade/src/opentelemetry/instrumentation/remoulade/version.py
+++ b/instrumentation/opentelemetry-instrumentation-remoulade/src/opentelemetry/instrumentation/remoulade/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-requests/pyproject.toml b/instrumentation/opentelemetry-instrumentation-requests/pyproject.toml
index 6252ab3de9..b3a56b7976 100644
--- a/instrumentation/opentelemetry-instrumentation-requests/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-requests/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/version.py b/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/version.py
+++ b/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-sklearn/pyproject.toml b/instrumentation/opentelemetry-instrumentation-sklearn/pyproject.toml
index ebda48982a..22fb150cf8 100644
--- a/instrumentation/opentelemetry-instrumentation-sklearn/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-sklearn/pyproject.toml
@@ -25,7 +25,7 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-sklearn/src/opentelemetry/instrumentation/sklearn/version.py b/instrumentation/opentelemetry-instrumentation-sklearn/src/opentelemetry/instrumentation/sklearn/version.py
index 604195c10e..deef26c62f 100644
--- a/instrumentation/opentelemetry-instrumentation-sklearn/src/opentelemetry/instrumentation/sklearn/version.py
+++ b/instrumentation/opentelemetry-instrumentation-sklearn/src/opentelemetry/instrumentation/sklearn/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-sqlalchemy/pyproject.toml b/instrumentation/opentelemetry-instrumentation-sqlalchemy/pyproject.toml
index 338606aa6e..ee602ead86 100644
--- a/instrumentation/opentelemetry-instrumentation-sqlalchemy/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-sqlalchemy/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
"packaging >= 21.0",
"wrapt >= 1.11.2",
]
diff --git a/instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/version.py b/instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/version.py
+++ b/instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-sqlite3/pyproject.toml b/instrumentation/opentelemetry-instrumentation-sqlite3/pyproject.toml
index 05bda3d1d0..ddc1eb1fab 100644
--- a/instrumentation/opentelemetry-instrumentation-sqlite3/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-sqlite3/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-dbapi == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-sqlite3/src/opentelemetry/instrumentation/sqlite3/version.py b/instrumentation/opentelemetry-instrumentation-sqlite3/src/opentelemetry/instrumentation/sqlite3/version.py
index 17627b21dc..db4e3a0022 100644
--- a/instrumentation/opentelemetry-instrumentation-sqlite3/src/opentelemetry/instrumentation/sqlite3/version.py
+++ b/instrumentation/opentelemetry-instrumentation-sqlite3/src/opentelemetry/instrumentation/sqlite3/version.py
@@ -12,6 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
_instruments = tuple()
diff --git a/instrumentation/opentelemetry-instrumentation-starlette/pyproject.toml b/instrumentation/opentelemetry-instrumentation-starlette/pyproject.toml
index 69805b660c..bf087d64d2 100644
--- a/instrumentation/opentelemetry-instrumentation-starlette/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-starlette/pyproject.toml
@@ -25,10 +25,10 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-instrumentation-asgi == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-instrumentation-asgi == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/version.py b/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/version.py
+++ b/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml b/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml
index aa2d8083ec..6847372597 100644
--- a/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-system-metrics/pyproject.toml
@@ -24,7 +24,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
]
dependencies = [
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"opentelemetry-api ~= 1.11",
"psutil ~= 5.9",
]
diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/version.py b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/version.py
+++ b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-threading/pyproject.toml b/instrumentation/opentelemetry-instrumentation-threading/pyproject.toml
index 16874b13f9..418bf5e537 100644
--- a/instrumentation/opentelemetry-instrumentation-threading/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-threading/pyproject.toml
@@ -25,7 +25,7 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-threading/src/opentelemetry/instrumentation/threading/version.py b/instrumentation/opentelemetry-instrumentation-threading/src/opentelemetry/instrumentation/threading/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-threading/src/opentelemetry/instrumentation/threading/version.py
+++ b/instrumentation/opentelemetry-instrumentation-threading/src/opentelemetry/instrumentation/threading/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-tornado/pyproject.toml b/instrumentation/opentelemetry-instrumentation-tornado/pyproject.toml
index ea1c48f011..345d226a55 100644
--- a/instrumentation/opentelemetry-instrumentation-tornado/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-tornado/pyproject.toml
@@ -24,9 +24,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-tornado/src/opentelemetry/instrumentation/tornado/version.py b/instrumentation/opentelemetry-instrumentation-tornado/src/opentelemetry/instrumentation/tornado/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-tornado/src/opentelemetry/instrumentation/tornado/version.py
+++ b/instrumentation/opentelemetry-instrumentation-tornado/src/opentelemetry/instrumentation/tornado/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-tortoiseorm/pyproject.toml b/instrumentation/opentelemetry-instrumentation-tortoiseorm/pyproject.toml
index 62e5da5b54..1d5d30aa45 100644
--- a/instrumentation/opentelemetry-instrumentation-tortoiseorm/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-tortoiseorm/pyproject.toml
@@ -25,8 +25,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-tortoiseorm/src/opentelemetry/instrumentation/tortoiseorm/version.py b/instrumentation/opentelemetry-instrumentation-tortoiseorm/src/opentelemetry/instrumentation/tortoiseorm/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-tortoiseorm/src/opentelemetry/instrumentation/tortoiseorm/version.py
+++ b/instrumentation/opentelemetry-instrumentation-tortoiseorm/src/opentelemetry/instrumentation/tortoiseorm/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-urllib/pyproject.toml b/instrumentation/opentelemetry-instrumentation-urllib/pyproject.toml
index 1011912a53..cc1594a31e 100644
--- a/instrumentation/opentelemetry-instrumentation-urllib/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-urllib/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/version.py b/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/version.py
index 17627b21dc..db4e3a0022 100644
--- a/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/version.py
+++ b/instrumentation/opentelemetry-instrumentation-urllib/src/opentelemetry/instrumentation/urllib/version.py
@@ -12,6 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
_instruments = tuple()
diff --git a/instrumentation/opentelemetry-instrumentation-urllib3/pyproject.toml b/instrumentation/opentelemetry-instrumentation-urllib3/pyproject.toml
index b5fafc0fe9..e4a6892b23 100644
--- a/instrumentation/opentelemetry-instrumentation-urllib3/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-urllib3/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
"wrapt >= 1.0.0, < 2.0.0",
]
diff --git a/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/version.py b/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/version.py
+++ b/instrumentation/opentelemetry-instrumentation-urllib3/src/opentelemetry/instrumentation/urllib3/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/instrumentation/opentelemetry-instrumentation-wsgi/pyproject.toml b/instrumentation/opentelemetry-instrumentation-wsgi/pyproject.toml
index e3e8bca651..32766c2def 100644
--- a/instrumentation/opentelemetry-instrumentation-wsgi/pyproject.toml
+++ b/instrumentation/opentelemetry-instrumentation-wsgi/pyproject.toml
@@ -25,9 +25,9 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
- "opentelemetry-semantic-conventions == 0.46b0.dev",
- "opentelemetry-util-http == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
+ "opentelemetry-semantic-conventions == 0.47b0.dev",
+ "opentelemetry-util-http == 0.47b0.dev",
]
[project.optional-dependencies]
diff --git a/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/version.py b/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/version.py
index ff4933b20b..b6955b0eca 100644
--- a/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/version.py
+++ b/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/opentelemetry-contrib-instrumentations/pyproject.toml b/opentelemetry-contrib-instrumentations/pyproject.toml
index 7e4afad6f7..ff100a1ca6 100644
--- a/opentelemetry-contrib-instrumentations/pyproject.toml
+++ b/opentelemetry-contrib-instrumentations/pyproject.toml
@@ -28,54 +28,54 @@ classifiers = [
"Programming Language :: Python :: 3.11",
]
dependencies = [
- "opentelemetry-instrumentation-aio-pika==0.46b0.dev",
- "opentelemetry-instrumentation-aiohttp-client==0.46b0.dev",
- "opentelemetry-instrumentation-aiohttp-server==0.46b0.dev",
- "opentelemetry-instrumentation-aiopg==0.46b0.dev",
- "opentelemetry-instrumentation-asgi==0.46b0.dev",
- "opentelemetry-instrumentation-asyncio==0.46b0.dev",
- "opentelemetry-instrumentation-asyncpg==0.46b0.dev",
- "opentelemetry-instrumentation-aws-lambda==0.46b0.dev",
- "opentelemetry-instrumentation-boto==0.46b0.dev",
- "opentelemetry-instrumentation-boto3sqs==0.46b0.dev",
- "opentelemetry-instrumentation-botocore==0.46b0.dev",
- "opentelemetry-instrumentation-cassandra==0.46b0.dev",
- "opentelemetry-instrumentation-celery==0.46b0.dev",
- "opentelemetry-instrumentation-confluent-kafka==0.46b0.dev",
- "opentelemetry-instrumentation-dbapi==0.46b0.dev",
- "opentelemetry-instrumentation-django==0.46b0.dev",
- "opentelemetry-instrumentation-elasticsearch==0.46b0.dev",
- "opentelemetry-instrumentation-falcon==0.46b0.dev",
- "opentelemetry-instrumentation-fastapi==0.46b0.dev",
- "opentelemetry-instrumentation-flask==0.46b0.dev",
- "opentelemetry-instrumentation-grpc==0.46b0.dev",
- "opentelemetry-instrumentation-httpx==0.46b0.dev",
- "opentelemetry-instrumentation-jinja2==0.46b0.dev",
- "opentelemetry-instrumentation-kafka-python==0.46b0.dev",
- "opentelemetry-instrumentation-logging==0.46b0.dev",
- "opentelemetry-instrumentation-mysql==0.46b0.dev",
- "opentelemetry-instrumentation-mysqlclient==0.46b0.dev",
- "opentelemetry-instrumentation-pika==0.46b0.dev",
- "opentelemetry-instrumentation-psycopg==0.46b0.dev",
- "opentelemetry-instrumentation-psycopg2==0.46b0.dev",
- "opentelemetry-instrumentation-pymemcache==0.46b0.dev",
- "opentelemetry-instrumentation-pymongo==0.46b0.dev",
- "opentelemetry-instrumentation-pymysql==0.46b0.dev",
- "opentelemetry-instrumentation-pyramid==0.46b0.dev",
- "opentelemetry-instrumentation-redis==0.46b0.dev",
- "opentelemetry-instrumentation-remoulade==0.46b0.dev",
- "opentelemetry-instrumentation-requests==0.46b0.dev",
- "opentelemetry-instrumentation-sklearn==0.46b0.dev",
- "opentelemetry-instrumentation-sqlalchemy==0.46b0.dev",
- "opentelemetry-instrumentation-sqlite3==0.46b0.dev",
- "opentelemetry-instrumentation-starlette==0.46b0.dev",
- "opentelemetry-instrumentation-system-metrics==0.46b0.dev",
- "opentelemetry-instrumentation-threading==0.46b0.dev",
- "opentelemetry-instrumentation-tornado==0.46b0.dev",
- "opentelemetry-instrumentation-tortoiseorm==0.46b0.dev",
- "opentelemetry-instrumentation-urllib==0.46b0.dev",
- "opentelemetry-instrumentation-urllib3==0.46b0.dev",
- "opentelemetry-instrumentation-wsgi==0.46b0.dev",
+ "opentelemetry-instrumentation-aio-pika==0.47b0.dev",
+ "opentelemetry-instrumentation-aiohttp-client==0.47b0.dev",
+ "opentelemetry-instrumentation-aiohttp-server==0.47b0.dev",
+ "opentelemetry-instrumentation-aiopg==0.47b0.dev",
+ "opentelemetry-instrumentation-asgi==0.47b0.dev",
+ "opentelemetry-instrumentation-asyncio==0.47b0.dev",
+ "opentelemetry-instrumentation-asyncpg==0.47b0.dev",
+ "opentelemetry-instrumentation-aws-lambda==0.47b0.dev",
+ "opentelemetry-instrumentation-boto==0.47b0.dev",
+ "opentelemetry-instrumentation-boto3sqs==0.47b0.dev",
+ "opentelemetry-instrumentation-botocore==0.47b0.dev",
+ "opentelemetry-instrumentation-cassandra==0.47b0.dev",
+ "opentelemetry-instrumentation-celery==0.47b0.dev",
+ "opentelemetry-instrumentation-confluent-kafka==0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi==0.47b0.dev",
+ "opentelemetry-instrumentation-django==0.47b0.dev",
+ "opentelemetry-instrumentation-elasticsearch==0.47b0.dev",
+ "opentelemetry-instrumentation-falcon==0.47b0.dev",
+ "opentelemetry-instrumentation-fastapi==0.47b0.dev",
+ "opentelemetry-instrumentation-flask==0.47b0.dev",
+ "opentelemetry-instrumentation-grpc==0.47b0.dev",
+ "opentelemetry-instrumentation-httpx==0.47b0.dev",
+ "opentelemetry-instrumentation-jinja2==0.47b0.dev",
+ "opentelemetry-instrumentation-kafka-python==0.47b0.dev",
+ "opentelemetry-instrumentation-logging==0.47b0.dev",
+ "opentelemetry-instrumentation-mysql==0.47b0.dev",
+ "opentelemetry-instrumentation-mysqlclient==0.47b0.dev",
+ "opentelemetry-instrumentation-pika==0.47b0.dev",
+ "opentelemetry-instrumentation-psycopg==0.47b0.dev",
+ "opentelemetry-instrumentation-psycopg2==0.47b0.dev",
+ "opentelemetry-instrumentation-pymemcache==0.47b0.dev",
+ "opentelemetry-instrumentation-pymongo==0.47b0.dev",
+ "opentelemetry-instrumentation-pymysql==0.47b0.dev",
+ "opentelemetry-instrumentation-pyramid==0.47b0.dev",
+ "opentelemetry-instrumentation-redis==0.47b0.dev",
+ "opentelemetry-instrumentation-remoulade==0.47b0.dev",
+ "opentelemetry-instrumentation-requests==0.47b0.dev",
+ "opentelemetry-instrumentation-sklearn==0.47b0.dev",
+ "opentelemetry-instrumentation-sqlalchemy==0.47b0.dev",
+ "opentelemetry-instrumentation-sqlite3==0.47b0.dev",
+ "opentelemetry-instrumentation-starlette==0.47b0.dev",
+ "opentelemetry-instrumentation-system-metrics==0.47b0.dev",
+ "opentelemetry-instrumentation-threading==0.47b0.dev",
+ "opentelemetry-instrumentation-tornado==0.47b0.dev",
+ "opentelemetry-instrumentation-tortoiseorm==0.47b0.dev",
+ "opentelemetry-instrumentation-urllib==0.47b0.dev",
+ "opentelemetry-instrumentation-urllib3==0.47b0.dev",
+ "opentelemetry-instrumentation-wsgi==0.47b0.dev",
]
[project.urls]
diff --git a/opentelemetry-contrib-instrumentations/src/opentelemetry/contrib-instrumentations/version.py b/opentelemetry-contrib-instrumentations/src/opentelemetry/contrib-instrumentations/version.py
index ff4933b20b..b6955b0eca 100644
--- a/opentelemetry-contrib-instrumentations/src/opentelemetry/contrib-instrumentations/version.py
+++ b/opentelemetry-contrib-instrumentations/src/opentelemetry/contrib-instrumentations/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/opentelemetry-distro/pyproject.toml b/opentelemetry-distro/pyproject.toml
index 0cec60a63f..cf6b3a671b 100644
--- a/opentelemetry-distro/pyproject.toml
+++ b/opentelemetry-distro/pyproject.toml
@@ -23,13 +23,13 @@ classifiers = [
]
dependencies = [
"opentelemetry-api ~= 1.12",
- "opentelemetry-instrumentation == 0.46b0.dev",
+ "opentelemetry-instrumentation == 0.47b0.dev",
"opentelemetry-sdk ~= 1.13",
]
[project.optional-dependencies]
otlp = [
- "opentelemetry-exporter-otlp == 1.25.0.dev",
+ "opentelemetry-exporter-otlp == 1.26.0.dev",
]
[project.entry-points.opentelemetry_configurator]
diff --git a/opentelemetry-distro/src/opentelemetry/distro/version.py b/opentelemetry-distro/src/opentelemetry/distro/version.py
index ff4933b20b..b6955b0eca 100644
--- a/opentelemetry-distro/src/opentelemetry/distro/version.py
+++ b/opentelemetry-distro/src/opentelemetry/distro/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py
index 9eebd5bb38..ea8fa48046 100644
--- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py
+++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py
@@ -18,180 +18,180 @@
libraries = [
{
"library": "aio_pika >= 7.2.0, < 10.0.0",
- "instrumentation": "opentelemetry-instrumentation-aio-pika==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-aio-pika==0.47b0.dev",
},
{
"library": "aiohttp ~= 3.0",
- "instrumentation": "opentelemetry-instrumentation-aiohttp-client==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-aiohttp-client==0.47b0.dev",
},
{
"library": "aiohttp ~= 3.0",
- "instrumentation": "opentelemetry-instrumentation-aiohttp-server==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-aiohttp-server==0.47b0.dev",
},
{
"library": "aiopg >= 0.13.0, < 2.0.0",
- "instrumentation": "opentelemetry-instrumentation-aiopg==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-aiopg==0.47b0.dev",
},
{
"library": "asgiref ~= 3.0",
- "instrumentation": "opentelemetry-instrumentation-asgi==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-asgi==0.47b0.dev",
},
{
"library": "asyncpg >= 0.12.0",
- "instrumentation": "opentelemetry-instrumentation-asyncpg==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-asyncpg==0.47b0.dev",
},
{
"library": "boto~=2.0",
- "instrumentation": "opentelemetry-instrumentation-boto==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-boto==0.47b0.dev",
},
{
"library": "boto3 ~= 1.0",
- "instrumentation": "opentelemetry-instrumentation-boto3sqs==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-boto3sqs==0.47b0.dev",
},
{
"library": "botocore ~= 1.0",
- "instrumentation": "opentelemetry-instrumentation-botocore==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-botocore==0.47b0.dev",
},
{
"library": "cassandra-driver ~= 3.25",
- "instrumentation": "opentelemetry-instrumentation-cassandra==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-cassandra==0.47b0.dev",
},
{
"library": "scylla-driver ~= 3.25",
- "instrumentation": "opentelemetry-instrumentation-cassandra==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-cassandra==0.47b0.dev",
},
{
"library": "celery >= 4.0, < 6.0",
- "instrumentation": "opentelemetry-instrumentation-celery==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-celery==0.47b0.dev",
},
{
"library": "confluent-kafka >= 1.8.2, <= 2.3.0",
- "instrumentation": "opentelemetry-instrumentation-confluent-kafka==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-confluent-kafka==0.47b0.dev",
},
{
"library": "django >= 1.10",
- "instrumentation": "opentelemetry-instrumentation-django==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-django==0.47b0.dev",
},
{
"library": "elasticsearch >= 6.0",
- "instrumentation": "opentelemetry-instrumentation-elasticsearch==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-elasticsearch==0.47b0.dev",
},
{
"library": "falcon >= 1.4.1, < 3.1.2",
- "instrumentation": "opentelemetry-instrumentation-falcon==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-falcon==0.47b0.dev",
},
{
"library": "fastapi ~= 0.58",
- "instrumentation": "opentelemetry-instrumentation-fastapi==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-fastapi==0.47b0.dev",
},
{
"library": "flask >= 1.0",
- "instrumentation": "opentelemetry-instrumentation-flask==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-flask==0.47b0.dev",
},
{
"library": "grpcio ~= 1.27",
- "instrumentation": "opentelemetry-instrumentation-grpc==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-grpc==0.47b0.dev",
},
{
"library": "httpx >= 0.18.0",
- "instrumentation": "opentelemetry-instrumentation-httpx==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-httpx==0.47b0.dev",
},
{
"library": "jinja2 >= 2.7, < 4.0",
- "instrumentation": "opentelemetry-instrumentation-jinja2==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-jinja2==0.47b0.dev",
},
{
"library": "kafka-python >= 2.0",
- "instrumentation": "opentelemetry-instrumentation-kafka-python==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-kafka-python==0.47b0.dev",
},
{
"library": "mysql-connector-python ~= 8.0",
- "instrumentation": "opentelemetry-instrumentation-mysql==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-mysql==0.47b0.dev",
},
{
"library": "mysqlclient < 3",
- "instrumentation": "opentelemetry-instrumentation-mysqlclient==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-mysqlclient==0.47b0.dev",
},
{
"library": "pika >= 0.12.0",
- "instrumentation": "opentelemetry-instrumentation-pika==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-pika==0.47b0.dev",
},
{
"library": "psycopg >= 3.1.0",
- "instrumentation": "opentelemetry-instrumentation-psycopg==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-psycopg==0.47b0.dev",
},
{
"library": "psycopg2 >= 2.7.3.1",
- "instrumentation": "opentelemetry-instrumentation-psycopg2==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-psycopg2==0.47b0.dev",
},
{
"library": "pymemcache >= 1.3.5, < 5",
- "instrumentation": "opentelemetry-instrumentation-pymemcache==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-pymemcache==0.47b0.dev",
},
{
"library": "pymongo >= 3.1, < 5.0",
- "instrumentation": "opentelemetry-instrumentation-pymongo==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-pymongo==0.47b0.dev",
},
{
"library": "PyMySQL < 2",
- "instrumentation": "opentelemetry-instrumentation-pymysql==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-pymysql==0.47b0.dev",
},
{
"library": "pyramid >= 1.7",
- "instrumentation": "opentelemetry-instrumentation-pyramid==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-pyramid==0.47b0.dev",
},
{
"library": "redis >= 2.6",
- "instrumentation": "opentelemetry-instrumentation-redis==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-redis==0.47b0.dev",
},
{
"library": "remoulade >= 0.50",
- "instrumentation": "opentelemetry-instrumentation-remoulade==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-remoulade==0.47b0.dev",
},
{
"library": "requests ~= 2.0",
- "instrumentation": "opentelemetry-instrumentation-requests==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-requests==0.47b0.dev",
},
{
"library": "scikit-learn ~= 0.24.0",
- "instrumentation": "opentelemetry-instrumentation-sklearn==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-sklearn==0.47b0.dev",
},
{
"library": "sqlalchemy",
- "instrumentation": "opentelemetry-instrumentation-sqlalchemy==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-sqlalchemy==0.47b0.dev",
},
{
"library": "starlette ~= 0.13.0",
- "instrumentation": "opentelemetry-instrumentation-starlette==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-starlette==0.47b0.dev",
},
{
"library": "psutil >= 5",
- "instrumentation": "opentelemetry-instrumentation-system-metrics==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-system-metrics==0.47b0.dev",
},
{
"library": "tornado >= 5.1.1",
- "instrumentation": "opentelemetry-instrumentation-tornado==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-tornado==0.47b0.dev",
},
{
"library": "tortoise-orm >= 0.17.0",
- "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.47b0.dev",
},
{
"library": "pydantic >= 1.10.2",
- "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.47b0.dev",
},
{
"library": "urllib3 >= 1.0.0, < 3.0.0",
- "instrumentation": "opentelemetry-instrumentation-urllib3==0.46b0.dev",
+ "instrumentation": "opentelemetry-instrumentation-urllib3==0.47b0.dev",
},
]
default_instrumentations = [
- "opentelemetry-instrumentation-asyncio==0.46b0.dev",
- "opentelemetry-instrumentation-aws-lambda==0.46b0.dev",
- "opentelemetry-instrumentation-dbapi==0.46b0.dev",
- "opentelemetry-instrumentation-logging==0.46b0.dev",
- "opentelemetry-instrumentation-sqlite3==0.46b0.dev",
- "opentelemetry-instrumentation-threading==0.46b0.dev",
- "opentelemetry-instrumentation-urllib==0.46b0.dev",
- "opentelemetry-instrumentation-wsgi==0.46b0.dev",
+ "opentelemetry-instrumentation-asyncio==0.47b0.dev",
+ "opentelemetry-instrumentation-aws-lambda==0.47b0.dev",
+ "opentelemetry-instrumentation-dbapi==0.47b0.dev",
+ "opentelemetry-instrumentation-logging==0.47b0.dev",
+ "opentelemetry-instrumentation-sqlite3==0.47b0.dev",
+ "opentelemetry-instrumentation-threading==0.47b0.dev",
+ "opentelemetry-instrumentation-urllib==0.47b0.dev",
+ "opentelemetry-instrumentation-wsgi==0.47b0.dev",
]
diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/version.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/version.py
index ff4933b20b..b6955b0eca 100644
--- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/version.py
+++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/version.py b/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/version.py
index ff4933b20b..b6955b0eca 100644
--- a/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/version.py
+++ b/processor/opentelemetry-processor-baggage/src/opentelemetry/processor/baggage/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/propagator/opentelemetry-propagator-ot-trace/src/opentelemetry/propagators/ot_trace/version.py b/propagator/opentelemetry-propagator-ot-trace/src/opentelemetry/propagators/ot_trace/version.py
index ff4933b20b..b6955b0eca 100644
--- a/propagator/opentelemetry-propagator-ot-trace/src/opentelemetry/propagators/ot_trace/version.py
+++ b/propagator/opentelemetry-propagator-ot-trace/src/opentelemetry/propagators/ot_trace/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/resource/opentelemetry-resource-detector-container/src/opentelemetry/resource/detector/container/version.py b/resource/opentelemetry-resource-detector-container/src/opentelemetry/resource/detector/container/version.py
index ff4933b20b..b6955b0eca 100644
--- a/resource/opentelemetry-resource-detector-container/src/opentelemetry/resource/detector/container/version.py
+++ b/resource/opentelemetry-resource-detector-container/src/opentelemetry/resource/detector/container/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
diff --git a/util/opentelemetry-util-http/src/opentelemetry/util/http/version.py b/util/opentelemetry-util-http/src/opentelemetry/util/http/version.py
index ff4933b20b..b6955b0eca 100644
--- a/util/opentelemetry-util-http/src/opentelemetry/util/http/version.py
+++ b/util/opentelemetry-util-http/src/opentelemetry/util/http/version.py
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.46b0.dev"
+__version__ = "0.47b0.dev"
From 55c829b6c4b86b0b62405369f75270e8c00b907e Mon Sep 17 00:00:00 2001
From: Leighton Chen
Date: Fri, 31 May 2024 09:04:58 -0700
Subject: [PATCH 21/24] Update release.yml
---
.github/workflows/release.yml | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b60ebc7599..ec544b43c8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -81,12 +81,14 @@ jobs:
# rejected by pypi (e.g "3 - Beta"). This would cause a failure during the
# middle of the package upload causing the action to fail, and certain packages
# might have already been updated, this would be bad.
- - name: Publish to TestPyPI
- env:
- TWINE_USERNAME: '__token__'
- TWINE_PASSWORD: ${{ secrets.test_pypi_token }}
- run: |
- twine upload --repository testpypi --skip-existing --verbose dist/*
+ # EDIT: 5/31/2024 - TestPypi now requires a verified email. Commenting out as a temporary measure
+ # until we found TestPypi credentials.
+ # - name: Publish to TestPyPI
+ # env:
+ # TWINE_USERNAME: '__token__'
+ # TWINE_PASSWORD: ${{ secrets.test_pypi_token }}
+ # run: |
+ # twine upload --repository testpypi --skip-existing --verbose dist/*
- name: Publish to PyPI
env:
From 73d0fa46a98edebf50acfee3897346913ec8129c Mon Sep 17 00:00:00 2001
From: OpenTelemetry Bot <107717825+opentelemetrybot@users.noreply.github.com>
Date: Fri, 31 May 2024 19:00:14 +0200
Subject: [PATCH 22/24] Copy change log updates from release/v1.25.x-0.46bx
(#2571)
---
CHANGELOG.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 778f16c54b..eca19d3fa8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,12 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
-- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version
- ([#2500](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500))
- `opentelemetry-instrumentation-httpx` Ensure httpx.get or httpx.request like methods are instrumented
([#2538](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2538))
-## Version 1.25.0/0.46b0 (2024-05-30)
+## Version 1.25.0/0.46b0 (2024-05-31)
### Breaking changes
@@ -51,6 +49,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
+- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version
+ ([#2500](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500))
- `opentelemetry-instrumentation-grpc` AioClientInterceptor should propagate with a Metadata object
([#2363](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2363))
- `opentelemetry-instrumentation-boto3sqs` Instrument Session and resource
From ed51ebb312fa571ee5a07af871443d97915b89fe Mon Sep 17 00:00:00 2001
From: Pavel Perestoronin
Date: Mon, 3 Jun 2024 19:18:47 +0200
Subject: [PATCH 23/24] feat(asgi,fastapi,starlette)!: provide both send and
receive hooks with `scope` and `message` (#2546)
---
CHANGELOG.md | 1 +
.../instrumentation/asgi/__init__.py | 37 +++++++-------
.../instrumentation/asgi/types.py | 49 +++++++++++++++++++
.../tests/test_asgi_middleware.py | 6 +--
.../instrumentation/fastapi/__init__.py | 33 ++++++-------
.../tests/test_fastapi_instrumentation.py | 12 ++---
.../instrumentation/starlette/__init__.py | 35 ++++++-------
.../tests/test_starlette_instrumentation.py | 12 ++---
8 files changed, 118 insertions(+), 67 deletions(-)
create mode 100644 instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/types.py
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eca19d3fa8..b92f0c62c7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#2425](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2425))
- `opentelemetry-instrumentation-flask` Add `http.method` to `span.name`
([#2454](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2454))
+- ASGI, FastAPI, Starlette: provide both send and receive hooks with `scope` and `message` for internal spans ([#2546](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2546))
### Added
diff --git a/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py b/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py
index 405c470ceb..8edb3420b1 100644
--- a/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py
@@ -81,15 +81,15 @@ async def hello():
.. code-block:: python
- def server_request_hook(span: Span, scope: dict):
+ def server_request_hook(span: Span, scope: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_request_hook", "some-value")
- def client_request_hook(span: Span, scope: dict):
+ def client_request_hook(span: Span, scope: dict[str, Any], message: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_client_request_hook", "some-value")
- def client_response_hook(span: Span, message: dict):
+ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_response_hook", "some-value")
@@ -200,6 +200,11 @@ def client_response_hook(span: Span, message: dict):
from asgiref.compatibility import guarantee_single_callable
from opentelemetry import context, trace
+from opentelemetry.instrumentation.asgi.types import (
+ ClientRequestHook,
+ ClientResponseHook,
+ ServerRequestHook,
+)
from opentelemetry.instrumentation.asgi.version import __version__ # noqa
from opentelemetry.instrumentation.propagators import (
get_global_response_propagator,
@@ -212,7 +217,7 @@ def client_response_hook(span: Span, message: dict):
from opentelemetry.propagators.textmap import Getter, Setter
from opentelemetry.semconv.metrics import MetricInstruments
from opentelemetry.semconv.trace import SpanAttributes
-from opentelemetry.trace import Span, set_span_in_context
+from opentelemetry.trace import set_span_in_context
from opentelemetry.trace.status import Status, StatusCode
from opentelemetry.util.http import (
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS,
@@ -227,10 +232,6 @@ def client_response_hook(span: Span, message: dict):
remove_url_credentials,
)
-_ServerRequestHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-_ClientRequestHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-_ClientResponseHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-
class ASGIGetter(Getter[dict]):
def get(
@@ -454,10 +455,10 @@ class OpenTelemetryMiddleware:
Optional: Defaults to get_default_span_details.
server_request_hook: Optional callback which is called with the server span and ASGI
scope object for every incoming request.
- client_request_hook: Optional callback which is called with the internal span and an ASGI
- scope which is sent as a dictionary for when the method receive is called.
- client_response_hook: Optional callback which is called with the internal span and an ASGI
- event which is sent as a dictionary for when the method send is called.
+ client_request_hook: Optional callback which is called with the internal span, and ASGI
+ scope and event which are sent as dictionaries for when the method receive is called.
+ client_response_hook: Optional callback which is called with the internal span, and ASGI
+ scope and event which are sent as dictionaries for when the method send is called.
tracer_provider: The optional tracer provider to use. If omitted
the current globally configured one is used.
"""
@@ -468,9 +469,9 @@ def __init__(
app,
excluded_urls=None,
default_span_details=None,
- server_request_hook: _ServerRequestHookT = None,
- client_request_hook: _ClientRequestHookT = None,
- client_response_hook: _ClientResponseHookT = None,
+ server_request_hook: ServerRequestHook = None,
+ client_request_hook: ClientRequestHook = None,
+ client_response_hook: ClientResponseHook = None,
tracer_provider=None,
meter_provider=None,
meter=None,
@@ -666,9 +667,9 @@ async def otel_receive():
with self.tracer.start_as_current_span(
" ".join((server_span_name, scope["type"], "receive"))
) as receive_span:
- if callable(self.client_request_hook):
- self.client_request_hook(receive_span, scope)
message = await receive()
+ if callable(self.client_request_hook):
+ self.client_request_hook(receive_span, scope, message)
if receive_span.is_recording():
if message["type"] == "websocket.receive":
set_status_code(receive_span, 200)
@@ -691,7 +692,7 @@ async def otel_send(message: dict[str, Any]):
" ".join((server_span_name, scope["type"], "send"))
) as send_span:
if callable(self.client_response_hook):
- self.client_response_hook(send_span, message)
+ self.client_response_hook(send_span, scope, message)
if send_span.is_recording():
if message["type"] == "http.response.start":
status_code = message["status"]
diff --git a/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/types.py b/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/types.py
new file mode 100644
index 0000000000..bc0c11afc9
--- /dev/null
+++ b/instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/types.py
@@ -0,0 +1,49 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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 typing import Any, Callable, Dict, Optional
+
+from opentelemetry.trace import Span
+
+_Scope = Dict[str, Any]
+_Message = Dict[str, Any]
+
+ServerRequestHook = Optional[Callable[[Span, _Scope], None]]
+"""
+Incoming request callback type.
+
+Args:
+ - Server span
+ - ASGI scope as a mapping
+"""
+
+ClientRequestHook = Optional[Callable[[Span, _Scope, _Message], None]]
+"""
+Receive callback type.
+
+Args:
+ - Internal span
+ - ASGI scope as a mapping
+ - ASGI event as a mapping
+"""
+
+ClientResponseHook = Optional[Callable[[Span, _Scope, _Message], None]]
+"""
+Send callback type.
+
+Args:
+ - Internal span
+ - ASGI scope as a mapping
+ - ASGI event as a mapping
+"""
diff --git a/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py b/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py
index 2a8fd1c1f0..902cd4ec7e 100644
--- a/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py
+++ b/instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py
@@ -683,10 +683,10 @@ def test_hooks(self):
def server_request_hook(span, scope):
span.update_name("name from server hook")
- def client_request_hook(recieve_span, request):
- recieve_span.update_name("name from client request hook")
+ def client_request_hook(receive_span, scope, message):
+ receive_span.update_name("name from client request hook")
- def client_response_hook(send_span, response):
+ def client_response_hook(send_span, scope, message):
send_span.set_attribute("attr-from-hook", "value")
def update_expected_hook_results(expected):
diff --git a/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/__init__.py b/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/__init__.py
index 10b73c7a5b..6f52c6ef3b 100644
--- a/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/__init__.py
@@ -59,20 +59,20 @@ async def foobar():
right after a span is created for a request and right before the span is finished for the response.
- The server request hook is passed a server span and ASGI scope object for every incoming request.
-- The client request hook is called with the internal span and an ASGI scope when the method ``receive`` is called.
-- The client response hook is called with the internal span and an ASGI event when the method ``send`` is called.
+- The client request hook is called with the internal span, and ASGI scope and event when the method ``receive`` is called.
+- The client response hook is called with the internal span, and ASGI scope and event when the method ``send`` is called.
.. code-block:: python
- def server_request_hook(span: Span, scope: dict):
+ def server_request_hook(span: Span, scope: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_request_hook", "some-value")
- def client_request_hook(span: Span, scope: dict):
+ def client_request_hook(span: Span, scope: dict[str, Any], message: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_client_request_hook", "some-value")
- def client_response_hook(span: Span, message: dict):
+ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_response_hook", "some-value")
@@ -172,28 +172,27 @@ def client_response_hook(span: Span, message: dict):
---
"""
import logging
-import typing
from typing import Collection
import fastapi
from starlette.routing import Match
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
+from opentelemetry.instrumentation.asgi.types import (
+ ClientRequestHook,
+ ClientResponseHook,
+ ServerRequestHook,
+)
from opentelemetry.instrumentation.fastapi.package import _instruments
from opentelemetry.instrumentation.fastapi.version import __version__
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
from opentelemetry.metrics import get_meter
from opentelemetry.semconv.trace import SpanAttributes
-from opentelemetry.trace import Span
from opentelemetry.util.http import get_excluded_urls, parse_excluded_urls
_excluded_urls_from_env = get_excluded_urls("FASTAPI")
_logger = logging.getLogger(__name__)
-_ServerRequestHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-_ClientRequestHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-_ClientResponseHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-
class FastAPIInstrumentor(BaseInstrumentor):
"""An instrumentor for FastAPI
@@ -206,9 +205,9 @@ class FastAPIInstrumentor(BaseInstrumentor):
@staticmethod
def instrument_app(
app: fastapi.FastAPI,
- server_request_hook: _ServerRequestHookT = None,
- client_request_hook: _ClientRequestHookT = None,
- client_response_hook: _ClientResponseHookT = None,
+ server_request_hook: ServerRequestHook = None,
+ client_request_hook: ClientRequestHook = None,
+ client_response_hook: ClientResponseHook = None,
tracer_provider=None,
meter_provider=None,
excluded_urls=None,
@@ -292,9 +291,9 @@ class _InstrumentedFastAPI(fastapi.FastAPI):
_tracer_provider = None
_meter_provider = None
_excluded_urls = None
- _server_request_hook: _ServerRequestHookT = None
- _client_request_hook: _ClientRequestHookT = None
- _client_response_hook: _ClientResponseHookT = None
+ _server_request_hook: ServerRequestHook = None
+ _client_request_hook: ClientRequestHook = None
+ _client_response_hook: ClientResponseHook = None
_instrumented_fastapi_apps = set()
def __init__(self, *args, **kwargs):
diff --git a/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py b/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py
index f9261ad5db..5cf9a0d590 100644
--- a/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py
+++ b/instrumentation/opentelemetry-instrumentation-fastapi/tests/test_fastapi_instrumentation.py
@@ -342,23 +342,23 @@ def server_request_hook(self, span, scope):
if self._server_request_hook is not None:
self._server_request_hook(span, scope)
- def client_request_hook(self, receive_span, request):
+ def client_request_hook(self, receive_span, scope, message):
if self._client_request_hook is not None:
- self._client_request_hook(receive_span, request)
+ self._client_request_hook(receive_span, scope, message)
- def client_response_hook(self, send_span, response):
+ def client_response_hook(self, send_span, scope, message):
if self._client_response_hook is not None:
- self._client_response_hook(send_span, response)
+ self._client_response_hook(send_span, scope, message)
def test_hooks(self):
def server_request_hook(span, scope):
span.update_name("name from server hook")
- def client_request_hook(receive_span, request):
+ def client_request_hook(receive_span, scope, message):
receive_span.update_name("name from client hook")
receive_span.set_attribute("attr-from-request-hook", "set")
- def client_response_hook(send_span, response):
+ def client_response_hook(send_span, scope, message):
send_span.update_name("name from response hook")
send_span.set_attribute("attr-from-response-hook", "value")
diff --git a/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/__init__.py b/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/__init__.py
index 1ebc3348d4..83f5b5c52b 100644
--- a/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/__init__.py
+++ b/instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/__init__.py
@@ -55,20 +55,22 @@ def home(request):
right after a span is created for a request and right before the span is finished for the response.
- The server request hook is passed a server span and ASGI scope object for every incoming request.
-- The client request hook is called with the internal span and an ASGI scope when the method ``receive`` is called.
-- The client response hook is called with the internal span and an ASGI event when the method ``send`` is called.
+- The client request hook is called with the internal span, and ASGI scope and event when the method ``receive`` is called.
+- The client response hook is called with the internal span, and ASGI scope and event when the method ``send`` is called.
For example,
.. code-block:: python
- def server_request_hook(span: Span, scope: dict):
+ def server_request_hook(span: Span, scope: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_request_hook", "some-value")
- def client_request_hook(span: Span, scope: dict):
+
+ def client_request_hook(span: Span, scope: dict[str, Any], message: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_client_request_hook", "some-value")
- def client_response_hook(span: Span, message: dict):
+
+ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, Any]):
if span and span.is_recording():
span.set_attribute("custom_user_attribute_from_response_hook", "some-value")
@@ -167,27 +169,26 @@ def client_response_hook(span: Span, message: dict):
API
---
"""
-import typing
from typing import Collection
from starlette import applications
from starlette.routing import Match
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
+from opentelemetry.instrumentation.asgi.types import (
+ ClientRequestHook,
+ ClientResponseHook,
+ ServerRequestHook,
+)
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
from opentelemetry.instrumentation.starlette.package import _instruments
from opentelemetry.instrumentation.starlette.version import __version__
from opentelemetry.metrics import get_meter
from opentelemetry.semconv.trace import SpanAttributes
-from opentelemetry.trace import Span
from opentelemetry.util.http import get_excluded_urls
_excluded_urls = get_excluded_urls("STARLETTE")
-_ServerRequestHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-_ClientRequestHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-_ClientResponseHookT = typing.Optional[typing.Callable[[Span, dict], None]]
-
class StarletteInstrumentor(BaseInstrumentor):
"""An instrumentor for starlette
@@ -200,9 +201,9 @@ class StarletteInstrumentor(BaseInstrumentor):
@staticmethod
def instrument_app(
app: applications.Starlette,
- server_request_hook: _ServerRequestHookT = None,
- client_request_hook: _ClientRequestHookT = None,
- client_response_hook: _ClientResponseHookT = None,
+ server_request_hook: ServerRequestHook = None,
+ client_request_hook: ClientRequestHook = None,
+ client_response_hook: ClientResponseHook = None,
meter_provider=None,
tracer_provider=None,
):
@@ -270,9 +271,9 @@ def _uninstrument(self, **kwargs):
class _InstrumentedStarlette(applications.Starlette):
_tracer_provider = None
_meter_provider = None
- _server_request_hook: _ServerRequestHookT = None
- _client_request_hook: _ClientRequestHookT = None
- _client_response_hook: _ClientResponseHookT = None
+ _server_request_hook: ServerRequestHook = None
+ _client_request_hook: ClientRequestHook = None
+ _client_response_hook: ClientResponseHook = None
_instrumented_starlette_apps = set()
def __init__(self, *args, **kwargs):
diff --git a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py
index 3784672fb5..0accda18fd 100644
--- a/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py
+++ b/instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py
@@ -263,23 +263,23 @@ def server_request_hook(self, span, scope):
if self._server_request_hook is not None:
self._server_request_hook(span, scope)
- def client_request_hook(self, receive_span, request):
+ def client_request_hook(self, receive_span, scope, message):
if self._client_request_hook is not None:
- self._client_request_hook(receive_span, request)
+ self._client_request_hook(receive_span, scope, message)
- def client_response_hook(self, send_span, response):
+ def client_response_hook(self, send_span, scope, message):
if self._client_response_hook is not None:
- self._client_response_hook(send_span, response)
+ self._client_response_hook(send_span, scope, message)
def test_hooks(self):
def server_request_hook(span, scope):
span.update_name("name from server hook")
- def client_request_hook(receive_span, request):
+ def client_request_hook(receive_span, scope, message):
receive_span.update_name("name from client hook")
receive_span.set_attribute("attr-from-request-hook", "set")
- def client_response_hook(send_span, response):
+ def client_response_hook(send_span, scope, message):
send_span.update_name("name from response hook")
send_span.set_attribute("attr-from-response-hook", "value")
From 768694cf7578e6a211c42049c85ef7227eea6b48 Mon Sep 17 00:00:00 2001
From: Alex Boten <223565+codeboten@users.noreply.github.com>
Date: Mon, 3 Jun 2024 14:20:09 -0700
Subject: [PATCH 24/24] add processor directory to build.sh (#2574)
---
scripts/build.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/build.sh b/scripts/build.sh
index 247bb24b4e..93dc0edce1 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -16,7 +16,7 @@ DISTDIR=dist
mkdir -p $DISTDIR
rm -rf ${DISTDIR:?}/*
- for d in exporter/*/ opentelemetry-instrumentation/ opentelemetry-contrib-instrumentations/ opentelemetry-distro/ instrumentation/*/ propagator/*/ resource/*/ sdk-extension/*/ util/*/ ; do
+ for d in exporter/*/ opentelemetry-instrumentation/ opentelemetry-contrib-instrumentations/ opentelemetry-distro/ instrumentation/*/ processor/*/ propagator/*/ resource/*/ sdk-extension/*/ util/*/ ; do
(
echo "building $d"
cd "$d"