grass.script: new RegionManager context manager #5628
+317
−22
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Similarly to MaskManager, this adds a context manager for temporary changes of computational region.
Example with explicit region parameters:
Example matching a raster map's region:
Example using g.region:
Example using set_region():
Example modifying a copy of environment (e.g. for parallelization):
This introduces 2 classes, the primary-to-be-used-one RegionManager, which uses the same implementation as
gs. use_temp_region
withWIND_OVERRIDE
variable. It saves a region and points the variable to the name of that region. Then there is RegionManagerEnv (not sure about the name), which usesGRASS_REGION
variable. The advantage of RegionManagerEnv is no files are written to disk, so it's more lightweight.The disadvantage is that simply calling
g.region
within the context will not affect the temporary region, but the global one, which can be confusing:Hence, RegionManager should probably be the primary implementation.