File tree 5 files changed +40
-10
lines changed
5 files changed +40
-10
lines changed Original file line number Diff line number Diff line change 1
1
Changelog
2
2
=========
3
3
4
+ ## TBD
5
+
6
+ ### Enhancements
7
+
8
+ * Avoid using deprecated ` flask.__version__ ` attribute
9
+ [ #365 ] ( https://github.com/bugsnag/bugsnag-python/pull/365 )
10
+
4
11
## v4.6.0 (2023-09-05)
5
12
6
13
### Enhancements
Original file line number Diff line number Diff line change 5
5
from bugsnag .wsgi import request_path
6
6
from bugsnag .legacy import _auto_leave_breadcrumb
7
7
from bugsnag .breadcrumbs import BreadcrumbType
8
- from bugsnag .utils import remove_query_from_url
8
+ from bugsnag .utils import remove_query_from_url , get_package_version
9
9
10
10
11
11
__all__ = ('handle_exceptions' ,)
@@ -36,9 +36,16 @@ def add_flask_request_to_notification(event: bugsnag.Event):
36
36
37
37
38
38
def handle_exceptions (app ):
39
- middleware = bugsnag .configure ().internal_middleware
40
- bugsnag .configure ().runtime_versions ['flask' ] = flask .__version__
39
+ configuration = bugsnag .configure ()
40
+
41
+ version = get_package_version ("flask" )
42
+
43
+ if version is not None :
44
+ configuration .runtime_versions ["flask" ] = version
45
+
46
+ middleware = configuration .internal_middleware
41
47
middleware .before_notify (add_flask_request_to_notification )
48
+
42
49
flask .got_request_exception .connect (__log_exception , app )
43
50
flask .request_started .connect (_on_request_started , app )
44
51
Original file line number Diff line number Diff line change @@ -461,3 +461,20 @@ def to_rfc3339(dt: datetime) -> str:
461
461
int (dt .microsecond / 1000 ),
462
462
_get_timezone_offset (dt )
463
463
)
464
+
465
+
466
+ def get_package_version (package_name : str ) -> Optional [str ]:
467
+ try :
468
+ from importlib import metadata
469
+
470
+ return metadata .version (package_name ) # type: ignore
471
+ except ImportError :
472
+ try :
473
+ import pkg_resources
474
+ except ImportError :
475
+ return None
476
+
477
+ try :
478
+ return pkg_resources .get_distribution (package_name ).version
479
+ except pkg_resources .DistributionNotFound :
480
+ return None
Original file line number Diff line number Diff line change @@ -261,16 +261,14 @@ def hello():
261
261
handle_exceptions (app )
262
262
app .test_client ().get ('/hello' )
263
263
264
- self .assertEqual ( len ( self . server .received ), 1 )
264
+ assert self .server .sent_report_count == 1
265
265
266
266
payload = self .server .received [0 ]['json_body' ]
267
- device_data = payload ['events' ][0 ]['device' ]
267
+ versions = payload ['events' ][0 ]['device' ][ 'runtimeVersions ' ]
268
268
269
- self .assertEquals (len (device_data ['runtimeVersions' ]), 2 )
270
- self .assertTrue (re .match (r'\d+\.\d+\.\d+' ,
271
- device_data ['runtimeVersions' ]['python' ]))
272
- self .assertTrue (re .match (r'\d+\.\d+\.\d+' ,
273
- device_data ['runtimeVersions' ]['flask' ]))
269
+ assert re .match (r'^\d+\.\d+\.\d+$' , versions ['python' ])
270
+ assert re .match (r'^\d+\.\d+\.\d+$' , versions ['flask' ])
271
+ assert len (versions ) == 2
274
272
275
273
def test_read_request_in_callback (self ):
276
274
def callback (event ):
Original file line number Diff line number Diff line change 68
68
exceptiongroup: exceptiongroup
69
69
lint: flake8
70
70
lint: mypy
71
+ lint: types-pkg_resources
71
72
lint: types-requests
72
73
lint: types-Flask
73
74
lint: types-contextvars
You can’t perform that action at this time.
0 commit comments