QGIS/python/core/additions/runtimeprofiler.py
Nyall Dawson 1040fe8705 Don't silently swallow exceptions in python context managers
Notably this causes processing modules to silently fail to load
without any warnings if the required dependancies (such as pyscopg2)
are not installed
2021-03-04 07:39:47 +10:00

47 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
"""
***************************************************************************
runtimeprofiler.py
---------------------
Date : May 2020
Copyright : (C) 2020 by Nyall Dawson
Email : nyall dot dawson at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
from qgis._core import QgsScopedRuntimeProfile
class ScopedRuntimeProfileContextManager():
"""
Context manager used to profile blocks of code in the QgsApplication.profiler() registry.
.. code-block:: python
with QgsRuntimeProfiler.profile('My operation'):
# do something
.. versionadded:: 3.14
"""
def __init__(self, operation):
self.operation = operation
self.profiler = None
def __enter__(self):
self.profiler = QgsScopedRuntimeProfile(self.operation)
return self.operation
def __exit__(self, ex_type, ex_value, traceback):
del self.profiler
return ex_type is None