opentelemetry-instrumentation-botocore 0.42b0__py3-none-any.whl → 0.44b0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -86,10 +86,6 @@ from botocore.endpoint import Endpoint
86
86
  from botocore.exceptions import ClientError
87
87
  from wrapt import wrap_function_wrapper
88
88
 
89
- from opentelemetry import context as context_api
90
-
91
- # FIXME: fix the importing of this private attribute when the location of the _SUPPRESS_HTTP_INSTRUMENTATION_KEY is defined.
92
- from opentelemetry.context import _SUPPRESS_HTTP_INSTRUMENTATION_KEY
93
89
  from opentelemetry.instrumentation.botocore.extensions import _find_extension
94
90
  from opentelemetry.instrumentation.botocore.extensions.types import (
95
91
  _AwsSdkCallContext,
@@ -98,7 +94,8 @@ from opentelemetry.instrumentation.botocore.package import _instruments
98
94
  from opentelemetry.instrumentation.botocore.version import __version__
99
95
  from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
100
96
  from opentelemetry.instrumentation.utils import (
101
- _SUPPRESS_INSTRUMENTATION_KEY,
97
+ is_instrumentation_enabled,
98
+ suppress_http_instrumentation,
102
99
  unwrap,
103
100
  )
104
101
  from opentelemetry.propagators.aws.aws_xray_propagator import AwsXRayPropagator
@@ -171,7 +168,7 @@ class BotocoreInstrumentor(BaseInstrumentor):
171
168
 
172
169
  # pylint: disable=too-many-branches
173
170
  def _patched_api_call(self, original_func, instance, args, kwargs):
174
- if context_api.get_value(_SUPPRESS_INSTRUMENTATION_KEY):
171
+ if not is_instrumentation_enabled():
175
172
  return original_func(*args, **kwargs)
176
173
 
177
174
  call_context = _determine_call_context(instance, args)
@@ -200,25 +197,20 @@ class BotocoreInstrumentor(BaseInstrumentor):
200
197
  _safe_invoke(extension.before_service_call, span)
201
198
  self._call_request_hook(span, call_context)
202
199
 
203
- token = context_api.attach(
204
- context_api.set_value(_SUPPRESS_HTTP_INSTRUMENTATION_KEY, True)
205
- )
206
-
207
- result = None
208
200
  try:
209
- result = original_func(*args, **kwargs)
210
- except ClientError as error:
211
- result = getattr(error, "response", None)
212
- _apply_response_attributes(span, result)
213
- _safe_invoke(extension.on_error, span, error)
214
- raise
215
- else:
216
- _apply_response_attributes(span, result)
217
- _safe_invoke(extension.on_success, span, result)
201
+ with suppress_http_instrumentation():
202
+ result = None
203
+ try:
204
+ result = original_func(*args, **kwargs)
205
+ except ClientError as error:
206
+ result = getattr(error, "response", None)
207
+ _apply_response_attributes(span, result)
208
+ _safe_invoke(extension.on_error, span, error)
209
+ raise
210
+ _apply_response_attributes(span, result)
211
+ _safe_invoke(extension.on_success, span, result)
218
212
  finally:
219
- context_api.detach(token)
220
213
  _safe_invoke(extension.after_service_call)
221
-
222
214
  self._call_response_hook(span, call_context, result)
223
215
 
224
216
  return result
@@ -28,6 +28,7 @@ from opentelemetry.semconv.trace import DbSystemValues, SpanAttributes
28
28
  from opentelemetry.trace.span import Span
29
29
  from opentelemetry.util.types import AttributeValue
30
30
 
31
+ # pylint: disable=invalid-name
31
32
  _AttributePathT = Union[str, Tuple[str]]
32
33
 
33
34
 
@@ -99,13 +99,13 @@ class _OpInvoke(_LambdaOperation):
99
99
  # Lambda extension
100
100
  ################################################################################
101
101
 
102
- _OPERATION_MAPPING = {
102
+ _OPERATION_MAPPING: Dict[str, _LambdaOperation] = {
103
103
  op.operation_name(): op
104
104
  for op in globals().values()
105
105
  if inspect.isclass(op)
106
106
  and issubclass(op, _LambdaOperation)
107
107
  and not inspect.isabstract(op)
108
- } # type: Dict[str, _LambdaOperation]
108
+ }
109
109
 
110
110
 
111
111
  class _LambdaExtension(_AwsSdkExtension):
@@ -82,7 +82,9 @@ class _OpPublish(_SnsOperation):
82
82
  attributes[SpanAttributes.MESSAGING_DESTINATION] = destination_name
83
83
 
84
84
  # TODO: Use SpanAttributes.MESSAGING_DESTINATION_NAME when opentelemetry-semantic-conventions 0.42b0 is released
85
- attributes["messaging.destination.name"] = cls._extract_input_arn(call_context)
85
+ attributes["messaging.destination.name"] = cls._extract_input_arn(
86
+ call_context
87
+ )
86
88
  call_context.span_name = (
87
89
  f"{'phone_number' if is_phone_number else destination_name} send"
88
90
  )
@@ -141,13 +143,13 @@ class _OpPublishBatch(_OpPublish):
141
143
  # SNS extension
142
144
  ################################################################################
143
145
 
144
- _OPERATION_MAPPING = {
146
+ _OPERATION_MAPPING: Dict[str, _SnsOperation] = {
145
147
  op.operation_name(): op
146
148
  for op in globals().values()
147
149
  if inspect.isclass(op)
148
150
  and issubclass(op, _SnsOperation)
149
151
  and not inspect.isabstract(op)
150
- } # type: Dict[str, _SnsOperation]
152
+ }
151
153
 
152
154
 
153
155
  class _SnsExtension(_AwsSdkExtension):
@@ -57,23 +57,21 @@ class _AwsSdkCallContext:
57
57
  boto_meta = client.meta
58
58
  service_model = boto_meta.service_model
59
59
 
60
- self.service = service_model.service_name.lower() # type: str
61
- self.operation = operation # type: str
62
- self.params = params # type: Dict[str, Any]
60
+ self.service = service_model.service_name.lower()
61
+ self.operation = operation
62
+ self.params = params
63
63
 
64
64
  # 'operation' and 'service' are essential for instrumentation.
65
65
  # for all other attributes we extract them defensively. All of them should
66
66
  # usually exist unless some future botocore version moved things.
67
- self.region = self._get_attr(
68
- boto_meta, "region_name"
69
- ) # type: Optional[str]
70
- self.endpoint_url = self._get_attr(
67
+ self.region: Optional[str] = self._get_attr(boto_meta, "region_name")
68
+ self.endpoint_url: Optional[str] = self._get_attr(
71
69
  boto_meta, "endpoint_url"
72
- ) # type: Optional[str]
70
+ )
73
71
 
74
- self.api_version = self._get_attr(
72
+ self.api_version: Optional[str] = self._get_attr(
75
73
  service_model, "api_version"
76
- ) # type: Optional[str]
74
+ )
77
75
  # name of the service in proper casing
78
76
  self.service_id = str(
79
77
  self._get_attr(service_model, "service_id", self.service)
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "0.42b0"
15
+ __version__ = "0.44b0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentelemetry-instrumentation-botocore
3
- Version: 0.42b0
3
+ Version: 0.44b0
4
4
  Summary: OpenTelemetry Botocore instrumentation
5
5
  Project-URL: Homepage, https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-botocore
6
6
  Author-email: OpenTelemetry Authors <cncf-opentelemetry-contributors@lists.cncf.io>
@@ -11,23 +11,23 @@ Classifier: Intended Audience :: Developers
11
11
  Classifier: License :: OSI Approved :: Apache Software License
12
12
  Classifier: Programming Language :: Python
13
13
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.7
15
14
  Classifier: Programming Language :: Python :: 3.8
16
15
  Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
- Requires-Python: >=3.7
18
+ Requires-Python: >=3.8
20
19
  Requires-Dist: opentelemetry-api~=1.12
21
- Requires-Dist: opentelemetry-instrumentation==0.42b0
20
+ Requires-Dist: opentelemetry-instrumentation==0.44b0
22
21
  Requires-Dist: opentelemetry-propagator-aws-xray==1.0.1
23
- Requires-Dist: opentelemetry-semantic-conventions==0.42b0
22
+ Requires-Dist: opentelemetry-semantic-conventions==0.44b0
24
23
  Provides-Extra: instruments
25
24
  Requires-Dist: botocore~=1.0; extra == 'instruments'
26
25
  Provides-Extra: test
26
+ Requires-Dist: botocore<1.31.81,~=1.0; extra == 'test'
27
27
  Requires-Dist: markupsafe==2.0.1; extra == 'test'
28
28
  Requires-Dist: moto[all]~=2.2.6; extra == 'test'
29
29
  Requires-Dist: opentelemetry-instrumentation-botocore[instruments]; extra == 'test'
30
- Requires-Dist: opentelemetry-test-utils==0.42b0; extra == 'test'
30
+ Requires-Dist: opentelemetry-test-utils==0.44b0; extra == 'test'
31
31
  Description-Content-Type: text/x-rst
32
32
 
33
33
  OpenTelemetry Botocore Tracing
@@ -0,0 +1,15 @@
1
+ opentelemetry/instrumentation/botocore/__init__.py,sha256=qdbOH9jYnG-ZZ9dpVnsVSJuaoTDcto3okjd950mhvzA,10222
2
+ opentelemetry/instrumentation/botocore/package.py,sha256=6xvfRpU_C3wlSO6pto7MhGtkPoCHDEiRO_Fh4DiC_50,622
3
+ opentelemetry/instrumentation/botocore/version.py,sha256=19mImFBLq6Vm8J2PHjFLnLCfNeBJuW5hSl2zbot4J5I,608
4
+ opentelemetry/instrumentation/botocore/extensions/__init__.py,sha256=nQGZ4Clq4d2eIeDK6v0IqQVJ6SIIBpzm57DJGXgL9TA,1665
5
+ opentelemetry/instrumentation/botocore/extensions/_messaging.py,sha256=VqNJGE-6fEA-96q97tlKXL3Iros8H9tBxFoy_i2LP1Y,1635
6
+ opentelemetry/instrumentation/botocore/extensions/dynamodb.py,sha256=BA-zoY-Cr878t5Q3pYS3r1PKAd4FFBtdTCXZLoC3tLE,13554
7
+ opentelemetry/instrumentation/botocore/extensions/lmbd.py,sha256=Lk3AoGiMNfYiHbfp16A5UXYgpoOgo0sNuuEYJN3QDSo,4151
8
+ opentelemetry/instrumentation/botocore/extensions/sns.py,sha256=zlvw25Z8UfaXyangAu_2nVvXHRGGPWrd0WbmJTk3cRM,5358
9
+ opentelemetry/instrumentation/botocore/extensions/sqs.py,sha256=F0spQ9P4HmhW4pwldFoAIC9mt9Q7Rad3-0h9lGE0Nac,2789
10
+ opentelemetry/instrumentation/botocore/extensions/types.py,sha256=JWSXOP3KC6WRXbWG4EQczDDjaYhpq2HzTisUZn9e0m4,4857
11
+ opentelemetry_instrumentation_botocore-0.44b0.dist-info/METADATA,sha256=4X7XXsqGwZyEaBFm92WoWWGnZbMXAdaZnfmH3b8fsWA,2258
12
+ opentelemetry_instrumentation_botocore-0.44b0.dist-info/WHEEL,sha256=TJPnKdtrSue7xZ_AVGkp9YXcvDrobsjBds1du3Nx6dc,87
13
+ opentelemetry_instrumentation_botocore-0.44b0.dist-info/entry_points.txt,sha256=v5hzQbZMJ61JuhBNq5jHYAapvv3C_486h9CTqxlkUTM,100
14
+ opentelemetry_instrumentation_botocore-0.44b0.dist-info/licenses/LICENSE,sha256=h8jwqxShIeVkc8vOo9ynxGYW16f4fVPxLhZKZs0H5U8,11350
15
+ opentelemetry_instrumentation_botocore-0.44b0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.17.1
2
+ Generator: hatchling 1.21.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,15 +0,0 @@
1
- opentelemetry/instrumentation/botocore/__init__.py,sha256=Ke6-ksTwnV_uUF3UmkzoDIC39_spSWGh4SlIu5yDGuI,10507
2
- opentelemetry/instrumentation/botocore/package.py,sha256=6xvfRpU_C3wlSO6pto7MhGtkPoCHDEiRO_Fh4DiC_50,622
3
- opentelemetry/instrumentation/botocore/version.py,sha256=Qmz6PKJoEeD8yuxjT2ts28U3I0PoIptGyb5gXaFDP-I,608
4
- opentelemetry/instrumentation/botocore/extensions/__init__.py,sha256=nQGZ4Clq4d2eIeDK6v0IqQVJ6SIIBpzm57DJGXgL9TA,1665
5
- opentelemetry/instrumentation/botocore/extensions/_messaging.py,sha256=VqNJGE-6fEA-96q97tlKXL3Iros8H9tBxFoy_i2LP1Y,1635
6
- opentelemetry/instrumentation/botocore/extensions/dynamodb.py,sha256=Dz50Orrdlj4cb6p5URX3OJJooGhQKdhm7tDDgwSQqkA,13523
7
- opentelemetry/instrumentation/botocore/extensions/lmbd.py,sha256=1ImTjvzzvX71h94TykZxMkrwIbnnVFii3u7VPQ0k21w,4159
8
- opentelemetry/instrumentation/botocore/extensions/sns.py,sha256=5I-ePfNp2uy6N7rhnQTUhbG1g4TEs_fz64rfPTBpTMU,5344
9
- opentelemetry/instrumentation/botocore/extensions/sqs.py,sha256=F0spQ9P4HmhW4pwldFoAIC9mt9Q7Rad3-0h9lGE0Nac,2789
10
- opentelemetry/instrumentation/botocore/extensions/types.py,sha256=mIK1fKhdi_E_9NPfgDjPGwUJQ7ffrbZNl_W-3XgABs0,4953
11
- opentelemetry_instrumentation_botocore-0.42b0.dist-info/METADATA,sha256=ixSyFu9-T9w06trRnLKLvf-uOL7BH38MivW324DJGTg,2253
12
- opentelemetry_instrumentation_botocore-0.42b0.dist-info/WHEEL,sha256=KGYbc1zXlYddvwxnNty23BeaKzh7YuoSIvIMO4jEhvw,87
13
- opentelemetry_instrumentation_botocore-0.42b0.dist-info/entry_points.txt,sha256=v5hzQbZMJ61JuhBNq5jHYAapvv3C_486h9CTqxlkUTM,100
14
- opentelemetry_instrumentation_botocore-0.42b0.dist-info/licenses/LICENSE,sha256=h8jwqxShIeVkc8vOo9ynxGYW16f4fVPxLhZKZs0H5U8,11350
15
- opentelemetry_instrumentation_botocore-0.42b0.dist-info/RECORD,,