Skip to content

Commit 01d42ff

Browse files
ref(bottle): Remove transaction_style parameter
1 parent 629f642 commit 01d42ff

2 files changed

Lines changed: 17 additions & 48 deletions

File tree

‎sentry_sdk/integrations/bottle.py‎

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@
1111
)
1212
from sentry_sdk.integrations._wsgi_common import RequestExtractor
1313
from sentry_sdk.integrations.wsgi import SentryWsgiMiddleware
14-
from sentry_sdk.traces import SOURCE_FOR_STYLE as SEGMENT_SOURCE_FOR_STYLE
14+
from sentry_sdk.traces import SegmentNameSource
1515
from sentry_sdk.utils import (
1616
capture_internal_exceptions,
1717
ensure_integration_enabled,
1818
event_from_exception,
1919
parse_version,
20-
transaction_from_function,
2120
)
2221

2322
if TYPE_CHECKING:
@@ -45,27 +44,15 @@
4544
raise DidNotEnable("Bottle not installed or incompatible")
4645

4746

48-
TRANSACTION_STYLE_VALUES = ("endpoint", "url")
49-
50-
5147
class BottleIntegration(Integration):
5248
identifier = "bottle"
5349
origin = f"auto.http.{identifier}"
5450

55-
transaction_style = ""
56-
5751
def __init__(
5852
self,
59-
transaction_style: str = "endpoint",
6053
*,
6154
failed_request_status_codes: "Set[int]" = _DEFAULT_FAILED_REQUEST_STATUS_CODES,
6255
) -> None:
63-
if transaction_style not in TRANSACTION_STYLE_VALUES:
64-
raise ValueError(
65-
"Invalid value for transaction_style: %s (must be in %s)"
66-
% (transaction_style, TRANSACTION_STYLE_VALUES)
67-
)
68-
self.transaction_style = transaction_style
6956
self.failed_request_status_codes = failed_request_status_codes
7057

7158
@staticmethod
@@ -127,9 +114,12 @@ def _patched_handle(self: "Bottle", environ: "Dict[str, Any]") -> "Any":
127114
if route_path is not None:
128115
server_span.set_attribute(SPANDATA.HTTP_ROUTE, route_path)
129116

130-
_set_segment_name_and_source(
131-
transaction_style=integration.transaction_style
132-
)
117+
name = _get_transaction_name(bottle_request)
118+
if name:
119+
sentry_sdk.get_current_scope().set_transaction_name(
120+
name,
121+
source=SegmentNameSource.ROUTE,
122+
)
133123

134124
return res
135125

@@ -192,38 +182,20 @@ def size_of_file(self, file: "FileUpload") -> int:
192182
return file.content_length
193183

194184

195-
def _get_transaction_name(transaction_style: str, request: "Any") -> str:
185+
def _get_transaction_name(request: "Any") -> str:
196186
try:
197-
if transaction_style == "url":
198-
return request.route.rule or "bottle request"
199-
else:
200-
return (
201-
request.route.name
202-
or transaction_from_function(request.route.callback)
203-
or "bottle request"
204-
)
187+
return request.route.rule or "bottle request"
205188
except RuntimeError:
206189
return "bottle request"
207190

208191

209-
def _set_segment_name_and_source(transaction_style: str) -> None:
210-
name = _get_transaction_name(transaction_style, bottle_request)
211-
if name:
212-
sentry_sdk.get_current_scope().set_transaction_name(
213-
name,
214-
source=SEGMENT_SOURCE_FOR_STYLE[transaction_style],
215-
)
216-
217-
218192
def _make_request_event_processor(
219193
app: "Bottle", request: "LocalRequest", integration: "BottleIntegration"
220194
) -> "EventProcessor":
221195
def event_processor(event: "Event", hint: "dict[str, Any]") -> "Event":
222-
name = _get_transaction_name(integration.transaction_style, request)
196+
name = _get_transaction_name(request)
223197
event["transaction"] = name
224-
event["transaction_info"] = {
225-
"source": SEGMENT_SOURCE_FOR_STYLE[integration.transaction_style]
226-
}
198+
event["transaction_info"] = {"source": SegmentNameSource.ROUTE}
227199

228200
with capture_internal_exceptions():
229201
BottleRequestExtractor(request).extract_into_event(event)

‎tests/integrations/bottle/test_bottle.py‎

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -488,28 +488,25 @@ def hi():
488488
assert segment["attributes"]["sentry.origin"] == "auto.http.bottle"
489489
assert segment["attributes"]["http.request.method"] == "GET"
490490
assert segment["attributes"]["http.response.status_code"] == 200
491-
assert segment["name"].endswith("hi")
491+
assert segment["name"] == "/message"
492492

493493

494494
@pytest.mark.parametrize(
495-
"url,transaction_style,expected_name,expected_source",
495+
"url,expected_name,expected_source",
496496
[
497-
("/message", "endpoint", "hi", "component"),
498-
("/message", "url", "/message", "route"),
499-
("/message/123456", "url", "/message/<message_id>", "route"),
500-
("/message-named-route", "endpoint", "hi", "component"),
497+
("/message", "/message", "route"),
498+
("/message/123456", "/message/<message_id>", "route"),
501499
],
502500
)
503-
def test_transaction_style(
501+
def test_segment_name_and_source(
504502
sentry_init,
505503
capture_items,
506504
url,
507-
transaction_style,
508505
expected_name,
509506
expected_source,
510507
):
511508
sentry_init(
512-
integrations=[BottleIntegration(transaction_style=transaction_style)],
509+
integrations=[BottleIntegration()],
513510
traces_sample_rate=1.0,
514511
)
515512
items = capture_items("span")

0 commit comments

Comments
 (0)