QGIS/python/core/additions/projectdirtyblocker.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

48 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
"""
***************************************************************************
projectdirtyblocker.py
---------------------
Date : May 2018
Copyright : (C) 2018 by Denis Rouzaud
Email : denis@opengis.ch
***************************************************************************
* *
* 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 QgsProjectDirtyBlocker
class ProjectDirtyBlocker():
"""
Context manager used to block project setDirty calls.
.. code-block:: python
project = QgsProject.instance()
with QgsProject.blockDirtying(project):
# do something
.. versionadded:: 3.2
"""
def __init__(self, project):
self.project = project
self.blocker = None
def __enter__(self):
self.blocker = QgsProjectDirtyBlocker(self.project)
return self.project
def __exit__(self, ex_type, ex_value, traceback):
del self.blocker
return ex_type is None