mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-30 00:07:09 -04:00 
			
		
		
		
	Notably this causes processing modules to silently fail to load without any warnings if the required dependancies (such as pyscopg2) are not installed
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			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
 |