File tree Expand file tree Collapse file tree 12 files changed +147
-45
lines changed Expand file tree Collapse file tree 12 files changed +147
-45
lines changed Original file line number Diff line number Diff line change 15
15
from sentry_sdk .utils import (
16
16
capture_internal_exceptions ,
17
17
event_from_exception ,
18
+ parse_version ,
18
19
transaction_from_function ,
19
20
HAS_REAL_CONTEXTVARS ,
20
21
CONTEXTVARS_ERROR_MESSAGE ,
@@ -64,10 +65,10 @@ def __init__(self, transaction_style="handler_name"):
64
65
def setup_once ():
65
66
# type: () -> None
66
67
67
- try :
68
- version = tuple ( map ( int , AIOHTTP_VERSION . split ( "." )[: 2 ]))
69
- except ( TypeError , ValueError ) :
70
- raise DidNotEnable ("AIOHTTP version unparsable : {}" .format (AIOHTTP_VERSION ))
68
+ version = parse_version ( AIOHTTP_VERSION )
69
+
70
+ if version is None :
71
+ raise DidNotEnable ("Unparsable AIOHTTP version: {}" .format (AIOHTTP_VERSION ))
71
72
72
73
if version < (3 , 4 ):
73
74
raise DidNotEnable ("AIOHTTP 3.4 or newer required." )
Original file line number Diff line number Diff line change 14
14
capture_internal_exceptions ,
15
15
event_from_exception ,
16
16
SENSITIVE_DATA_SUBSTITUTE ,
17
+ parse_version ,
17
18
)
18
19
19
20
try :
@@ -45,11 +46,15 @@ def setup_once():
45
46
46
47
try :
47
48
if isinstance (ARQ_VERSION , str ):
48
- version = tuple ( map ( int , ARQ_VERSION . split ( "." )[: 2 ]) )
49
+ version = parse_version ( ARQ_VERSION )
49
50
else :
50
51
version = ARQ_VERSION .version [:2 ]
52
+
51
53
except (TypeError , ValueError ):
52
- raise DidNotEnable ("arq version unparsable: {}" .format (ARQ_VERSION ))
54
+ version = None
55
+
56
+ if version is None :
57
+ raise DidNotEnable ("Unparsable arq version: {}" .format (ARQ_VERSION ))
53
58
54
59
if version < (0 , 23 ):
55
60
raise DidNotEnable ("arq 0.23 or newer required." )
Original file line number Diff line number Diff line change 7
7
8
8
from sentry_sdk ._functools import partial
9
9
from sentry_sdk ._types import TYPE_CHECKING
10
- from sentry_sdk .utils import parse_url
10
+ from sentry_sdk .utils import parse_url , parse_version
11
11
12
12
if TYPE_CHECKING :
13
13
from typing import Any
@@ -30,14 +30,17 @@ class Boto3Integration(Integration):
30
30
@staticmethod
31
31
def setup_once ():
32
32
# type: () -> None
33
- try :
34
- version = tuple (map (int , BOTOCORE_VERSION .split ("." )[:3 ]))
35
- except (ValueError , TypeError ):
33
+
34
+ version = parse_version (BOTOCORE_VERSION )
35
+
36
+ if version is None :
36
37
raise DidNotEnable (
37
38
"Unparsable botocore version: {}" .format (BOTOCORE_VERSION )
38
39
)
40
+
39
41
if version < (1 , 12 ):
40
42
raise DidNotEnable ("Botocore 1.12 or newer is required." )
43
+
41
44
orig_init = BaseClient .__init__
42
45
43
46
def sentry_patched_init (self , * args , ** kwargs ):
Original file line number Diff line number Diff line change 5
5
from sentry_sdk .utils import (
6
6
capture_internal_exceptions ,
7
7
event_from_exception ,
8
+ parse_version ,
8
9
transaction_from_function ,
9
10
)
10
11
from sentry_sdk .integrations import Integration , DidNotEnable
@@ -57,10 +58,10 @@ def __init__(self, transaction_style="endpoint"):
57
58
def setup_once ():
58
59
# type: () -> None
59
60
60
- try :
61
- version = tuple ( map ( int , BOTTLE_VERSION . replace ( "-dev" , "" ). split ( "." )))
62
- except ( TypeError , ValueError ) :
63
- raise DidNotEnable ("Unparsable Bottle version: {}" .format (version ))
61
+ version = parse_version ( BOTTLE_VERSION )
62
+
63
+ if version is None :
64
+ raise DidNotEnable ("Unparsable Bottle version: {}" .format (BOTTLE_VERSION ))
64
65
65
66
if version < (0 , 12 ):
66
67
raise DidNotEnable ("Bottle 0.12 or newer required." )
Original file line number Diff line number Diff line change 8
8
from sentry_sdk .utils import (
9
9
capture_internal_exceptions ,
10
10
event_from_exception ,
11
+ parse_version ,
11
12
)
12
13
from sentry_sdk ._types import TYPE_CHECKING
13
14
from sentry_sdk ._functools import wraps
@@ -102,10 +103,12 @@ class ChaliceIntegration(Integration):
102
103
@staticmethod
103
104
def setup_once ():
104
105
# type: () -> None
105
- try :
106
- version = tuple (map (int , CHALICE_VERSION .split ("." )[:3 ]))
107
- except (ValueError , TypeError ):
106
+
107
+ version = parse_version (CHALICE_VERSION )
108
+
109
+ if version is None :
108
110
raise DidNotEnable ("Unparsable Chalice version: {}" .format (CHALICE_VERSION ))
111
+
109
112
if version < (1 , 20 ):
110
113
old_get_view_function_response = Chalice ._get_view_function_response
111
114
else :
Original file line number Diff line number Diff line change 8
8
from sentry_sdk .utils import (
9
9
capture_internal_exceptions ,
10
10
event_from_exception ,
11
+ parse_version ,
11
12
)
12
13
13
14
from sentry_sdk ._types import TYPE_CHECKING
@@ -131,9 +132,10 @@ def __init__(self, transaction_style="uri_template"):
131
132
@staticmethod
132
133
def setup_once ():
133
134
# type: () -> None
134
- try :
135
- version = tuple (map (int , FALCON_VERSION .split ("." )))
136
- except (ValueError , TypeError ):
135
+
136
+ version = parse_version (FALCON_VERSION )
137
+
138
+ if version is None :
137
139
raise DidNotEnable ("Unparsable Falcon version: {}" .format (FALCON_VERSION ))
138
140
139
141
if version < (1 , 4 ):
Original file line number Diff line number Diff line change 10
10
from sentry_sdk .utils import (
11
11
capture_internal_exceptions ,
12
12
event_from_exception ,
13
+ parse_version ,
13
14
)
14
15
15
16
if TYPE_CHECKING :
@@ -64,16 +65,13 @@ def __init__(self, transaction_style="endpoint"):
64
65
def setup_once ():
65
66
# type: () -> None
66
67
67
- # This version parsing is absolutely naive but the alternative is to
68
- # import pkg_resources which slows down the SDK a lot.
69
- try :
70
- version = tuple (map (int , FLASK_VERSION .split ("." )[:3 ]))
71
- except (ValueError , TypeError ):
72
- # It's probably a release candidate, we assume it's fine.
73
- pass
74
- else :
75
- if version < (0 , 10 ):
76
- raise DidNotEnable ("Flask 0.10 or newer is required." )
68
+ version = parse_version (FLASK_VERSION )
69
+
70
+ if version is None :
71
+ raise DidNotEnable ("Unparsable Flask version: {}" .format (FLASK_VERSION ))
72
+
73
+ if version < (0 , 10 ):
74
+ raise DidNotEnable ("Flask 0.10 or newer is required." )
77
75
78
76
before_render_template .connect (_add_sentry_trace )
79
77
request_started .connect (_request_started )
Original file line number Diff line number Diff line change 11
11
capture_internal_exceptions ,
12
12
event_from_exception ,
13
13
format_timestamp ,
14
+ parse_version ,
14
15
)
15
16
16
17
try :
@@ -39,9 +40,9 @@ class RqIntegration(Integration):
39
40
def setup_once ():
40
41
# type: () -> None
41
42
42
- try :
43
- version = tuple ( map ( int , RQ_VERSION . split ( "." )[: 3 ]))
44
- except ( ValueError , TypeError ) :
43
+ version = parse_version ( RQ_VERSION )
44
+
45
+ if version is None :
45
46
raise DidNotEnable ("Unparsable RQ version: {}" .format (RQ_VERSION ))
46
47
47
48
if version < (0 , 6 ):
Original file line number Diff line number Diff line change 10
10
event_from_exception ,
11
11
HAS_REAL_CONTEXTVARS ,
12
12
CONTEXTVARS_ERROR_MESSAGE ,
13
+ parse_version ,
13
14
)
14
15
from sentry_sdk .integrations import Integration , DidNotEnable
15
16
from sentry_sdk .integrations ._wsgi_common import RequestExtractor , _filter_headers
51
52
52
53
class SanicIntegration (Integration ):
53
54
identifier = "sanic"
54
- version = ( 0 , 0 ) # type: Tuple[int, ...]
55
+ version = None
55
56
56
57
@staticmethod
57
58
def setup_once ():
58
59
# type: () -> None
59
60
60
- try :
61
- SanicIntegration . version = tuple ( map ( int , SANIC_VERSION . split ( "." )))
62
- except ( TypeError , ValueError ) :
61
+ SanicIntegration . version = parse_version ( SANIC_VERSION )
62
+
63
+ if SanicIntegration . version is None :
63
64
raise DidNotEnable ("Unparsable Sanic version: {}" .format (SANIC_VERSION ))
64
65
65
66
if SanicIntegration .version < (0 , 8 ):
@@ -225,7 +226,7 @@ async def sentry_wrapped_error_handler(request, exception):
225
226
finally :
226
227
# As mentioned in previous comment in _startup, this can be removed
227
228
# after https://github.com/sanic-org/sanic/issues/2297 is resolved
228
- if SanicIntegration .version == (21 , 9 ):
229
+ if SanicIntegration .version and SanicIntegration . version == (21 , 9 ):
229
230
await _hub_exit (request )
230
231
231
232
return sentry_wrapped_error_handler
Original file line number Diff line number Diff line change 1
1
from __future__ import absolute_import
2
2
3
- import re
4
-
5
3
from sentry_sdk ._compat import text_type
6
4
from sentry_sdk ._types import TYPE_CHECKING
7
5
from sentry_sdk .consts import SPANDATA
8
6
from sentry_sdk .hub import Hub
9
7
from sentry_sdk .integrations import Integration , DidNotEnable
10
8
from sentry_sdk .tracing_utils import record_sql_queries
11
9
10
+ from sentry_sdk .utils import parse_version
11
+
12
12
try :
13
13
from sqlalchemy .engine import Engine # type: ignore
14
14
from sqlalchemy .event import listen # type: ignore
@@ -31,11 +31,9 @@ class SqlalchemyIntegration(Integration):
31
31
def setup_once ():
32
32
# type: () -> None
33
33
34
- try :
35
- version = tuple (
36
- map (int , re .split ("b|rc" , SQLALCHEMY_VERSION )[0 ].split ("." ))
37
- )
38
- except (TypeError , ValueError ):
34
+ version = parse_version (SQLALCHEMY_VERSION )
35
+
36
+ if version is None :
39
37
raise DidNotEnable (
40
38
"Unparsable SQLAlchemy version: {}" .format (SQLALCHEMY_VERSION )
41
39
)
You can’t perform that action at this time.
0 commit comments